13. august 2005 - 21:07Der er
15 kommentarer og 1 løsning
Invalid column name
Hej alle
Hvorfor kan man ikke gøre sådan (et fiktisk eksempel, for nemhedens skyld):
SELECT TOP 3 REPLACE(Url, 'www.', '') AS newurl FROM selvetdk.KALENDER_EVENTS WHERE (newurl = Event_Url)
Den siger: "Invalid column name 'newurl'". Sagt med andre ord, hvorfor kan man ikke anvende værdien newurl under where-delen? Det havde ellers været smart.
Det er fordi en where kun kan bruge de oprindelige navne i tabellen - af optimeringshensyn. Du kan derimod erstatte "where" med "having" som filtrerer på resultatet. Du går dog glip af en noget effektivitet.
Skal det går hurtigt/hurtigere så smæk en ekstra kolonne ind fra starten, med den værdi du skal søge på.
SELECT REPLACE(Url, 'www.', '') AS newurl FROM KALENDER_EVENTS GROUP BY Url HAVING (newurl = Url)
Men det skal også lige siges, at jeg tester koden i Enterprise, men sql'en er vel ikke anderledes på det punkt, fordi det også er having-begrebet i mssql'en.
Hvis du skal bruge det i mysql, så test det i mysql, og spørg i mysql-kategorien. Hvis du skal bruge det i mssql, så test det i mssql, og spørg i mssql-kategorien.
Ok, men der er så langt mellem hjælpen i mssql-kategorien, så det næsten ikke er til at leve med, og så fristes man til at vælge andre kategorier, idet håbet om, at der ingen forskel er på det punkt, som man søger hjælp til.
Ikke for at spilde mere af din tid, men jeg vil blot oplyse, at der på dette punkt er forskel på sql'erne... har jeg lige fundet ud af efter at have prøvet det en mysql-server og en mssql-server.
Ja, helt klart. Jeg smækker en ekstra tabel ind. Der er vist ingen vej uden om. Det er bare lidt sørgeligt, at jeg skifter fra mysql til mssql, fordi det burde kunne mere... hymm... og så kan det ikke på dette punkt.
Der er en del begrænsninger, der er lagt ind for effektivitetens skyld. Du overtræder også 1. normalform for relationelle databaser, der som simpel regel siger at felternes værdier skal være "atomare", dvs. ikke have behov for (i sql-sammenhæng) at skulle deles yderligere op. Gør du det (+ de andre normalformer), så kan man "alt" ... ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.