Avatar billede axkris Nybegynder
13. august 2005 - 21:07 Der 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.
Avatar billede erikjacobsen Ekspert
13. august 2005 - 21:18 #1
Fjern "TOP 3" og skriv i stedet "LIMIT 0,3" til sidst.
Avatar billede axkris Nybegynder
13. august 2005 - 21:21 #2
Sorry, det er fordi jeg tænker i mssql, men det var ikke det, som jeg skulle have hjælpe til :-)

Kan du hjælpe mig? Så jeg kan bruge newurl-væriden i where-delen?

SELECT REPLACE(Url, 'www.', '') AS newurl
FROM selvetdk.KALENDER_EVENTS
WHERE (newurl = Event_Url)
Avatar billede erikjacobsen Ekspert
13. august 2005 - 21:26 #3
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å.
Avatar billede axkris Nybegynder
13. august 2005 - 21:30 #4
Takker - vil prøv med having først.
Avatar billede axkris Nybegynder
13. august 2005 - 21:32 #5
Hymm, stadig samme fejl ved:

SELECT    REPLACE(Url, 'www.', '') AS newurl
FROM        KALENDER_EVENTS
HAVING      (newurl = Event_Url)
Avatar billede erikjacobsen Ekspert
13. august 2005 - 21:38 #6
Ikke hos mig:

SELECT replace(navn,'ns','NNSS') AS `nnn` FROM navne having (`nnn` = 'HaNNSS')
Avatar billede axkris Nybegynder
13. august 2005 - 21:45 #7
Hymm... virker ikke her:

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.
Avatar billede erikjacobsen Ekspert
13. august 2005 - 21:48 #8
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.
Avatar billede axkris Nybegynder
13. august 2005 - 21:51 #9
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.

Takker - tryk svar :-)
Avatar billede erikjacobsen Ekspert
13. august 2005 - 21:53 #10
Men i dit forsøg på at spare tid, spilder du andres tid.

Jeg samler slet ikke på point, tak.
Avatar billede axkris Nybegynder
13. august 2005 - 21:55 #11
.
Avatar billede axkris Nybegynder
13. august 2005 - 21:56 #12
Du har da i hvert fald hjulpet mig videre, fordi nu søger jeg efter eksempler med "having", som jeg førhen ikke kendte til.
Avatar billede axkris Nybegynder
13. august 2005 - 23:20 #13
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.

Having kan desværre ikke bruges på den måde i mssql. Har derfor oprettet: http://eksperten.dk/spm/639921
Avatar billede erikjacobsen Ekspert
13. august 2005 - 23:22 #14
Kommentar: erikjacobsen 13/08-2005 21:26:28, sidste linie. Li'så godt først som sidst ;)
Avatar billede axkris Nybegynder
13. august 2005 - 23:25 #15
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.
Avatar billede erikjacobsen Ekspert
13. august 2005 - 23:28 #16
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" ... ;)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester