18. juli 2001 - 18:04
Der er
13 kommentarer og 1 løsning
Problemmer med SQL sætning.
Jeg har et problem, jeg har 3 tabeller 1/ cd (cdid, cdtitel) 2/ genrelink (cdid, genreid) 3/ genre (genreid, genre) Jeg vil gerne finde alle CD´er jeg har i min database + genre (nogle cd har flere genre) problem 1/ Den finder kun de CD´er jeg har tildelt en genre problem 2/ Den viser kun 1 genre, ved de CD´er der har flere genre hvordan gøres dette? <% sql = \"SELECT cd.titel, genrelink.cdid, genre.genre FROM cd INNER JOIN genrelink ON cd.cdid = genrelink.cdid INNER JOIN genre ON genrelink.cdid = genre.genreid\" Set dbconn = Server.CreateObject(\"ADODB.Connection\") dbconn.open \"DSN=cdbutik;UID=sa;PWD=\" set rs= kgconn.execute(sql) if not rs.eof = true then rs.MoveFirst do while Not rs.eof response.write rs.fields(\"titel\")&\" - \"&rs.fields(\"genre\") rs.MoveNext loop end if %> Peter Lang
Annonceindlæg fra Axcess Nordic
SELECT cd.titel, genrelink.cdid, genre.genre FROM cd LEFT JOIN genrelink ON cd.cdid = genrelink.cdid INNER JOIN genre ON genrelink.cdid = genre.genreid Det vil sige at du bare skal ændre første inner join til LEFT JOIN!\" //Nolle_K
Det hjalp lidt lidt, men der er stadig problemmer problem 1/ Den finder stadig kun de CD´er jeg har tildelt en genre. problem 2/ nu hvis en CD har flere genre viser den cd´ens titel flere gange. Peter Lang
Prøv at fjerne fra det sidste INNER JOIN og frem og ogås genre.genre! Det vil sige at SQL ser således ud SELECT cd.titel, genrelink.cdid FROM cd LEFT JOIN genrelink ON cd.cdid = genrelink.cdid Viser den nu alle CD\'er???
Fejl!! ADODB.Recordset error \'800a0cc1\' Item cannot be found in the collection corresponding to the requested name or ordinal. sog.asp, line 85
HAr du skrevet sætning som jeg har gjort! Lav en Copy! Husk at genre.genre skal væk
Jep.. Den viser nu alle CD´er, men hvad med genrene?
Prøv med right eller left join på den sidste join også og se om ikke det gør en forskel!
med LEFT JOIN viser den alle titler også den der ikke har nogle genre. med hvordan får man den til at vise alle genre på dem der har flere genre
Prøv med RIGHT JOIN ELler FULL join
18. juli 2001 - 18:55
#10
Det virker nu. men hvis en title har feks. 3 genre, bliver titlen fundet 3 gange, med forkelige genre. Jeg må vel køre MoveNext og se om næste titel er den samme, hvis ja har jeg genre 2 O.S.V Jeg haved håbet der var en smarter måde. Men sådan der det.
18. juli 2001 - 18:56
#11
Tak for hjælpen
18. juli 2001 - 18:57
#12
I orden!
18. juli 2001 - 19:11
#13
Det er der ikke! Hvordan ville du have returneret det?? Det kan ikke gøres smartere!
18. juli 2001 - 19:15
#14
Jeg ved det ikke jeg er lige starte på MS SQl do while Not rs.genre.eof response.write rs.fields(\"genre\") rs.genre.MoveNext loop Virker ikke
Computerworld tilbyder specialiserede kurser i database-management