Avatar billede christian-s Nybegynder
15. april 2004 - 22:25 Der er 18 kommentarer og
1 løsning

2 left joins i samme MySQL forespoergsel

Hvordan faar jeg 2 tabeller til at left joine i samme string?
Avatar billede dennismp Nybegynder
15. april 2004 - 22:32 #1
Kan du ikke komme med lidt mere info - der er jo mange måder at gøre det på.

SELECT ..
FROM table1
LEFT JOIN table2 a ON (table2.id = table1.otherid )
LEFT JOIN table3 b ON (table3.id = table1.otherid )
..

Der er mange muligheder :)
Avatar billede mikl-dk Nybegynder
15. april 2004 - 22:34 #2
Man bliver jo næsten helt rundtosset efter alle de gange, man skal gå til venstre - det minder jo efterhånden nærmest om dans ;)
Avatar billede dennismp Nybegynder
15. april 2004 - 22:38 #3
Så må man jo håbe at det er STRAIGHT og måske endda en NATURAL join :-)
Avatar billede christian-s Nybegynder
15. april 2004 - 22:38 #4
Jeg har forsoegt denne, men der meldes fejl:

            $sql = "SELECT press.*, pressgroup.*, author.* FROM press
            LEFT JOIN pressgroup a ON (pressgroup.pgid = press.pgroup)
            LEFT JOIN author b ON (author.aid = press.pauthor)
            ORDER BY $order";
Avatar billede dennismp Nybegynder
15. april 2004 - 22:41 #5
Hvad er fejlen?
Avatar billede christian-s Nybegynder
15. april 2004 - 22:43 #6
at der er fejl i dette, hvilket der ikke er:
while ($row = mysql_fetch_array($result)) {

der er en fejl i $sql, har testet :)
Avatar billede dennismp Nybegynder
15. april 2004 - 22:45 #7
jammen, hvilken sql fejl? hvad giver siger mysql_error()?
Avatar billede christian-s Nybegynder
15. april 2004 - 22:48 #8
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

i denne linie: while ($row = mysql_fetch_array($result)) {
Avatar billede mikl-dk Nybegynder
15. april 2004 - 22:50 #9
$result = mysql_query($sql) or die(mysql_error());
Avatar billede christian-s Nybegynder
15. april 2004 - 22:52 #10
Unknown table 'pressgroup'
der er en pressgroup tabel, hvad kan det skyldes?
Avatar billede dennismp Nybegynder
15. april 2004 - 22:55 #11
MySQL kan ikke finde den, så den findes ikke - den plejer at have ret :). Tjek for stave/slåfejl og den slags. Tag fx. og og tilføj en print $sql; i dit script så du kan se hvordan $sql ser ud. Brug så evt mysql/phpmyadmin eller hvad du nu foretrækker og print sql'en ind og se hvad der sker.. Så er det nemmere at "lege" med sql-statementet derinde end at gøre det via php
Avatar billede mikl-dk Nybegynder
15. april 2004 - 22:59 #12
christian-s har du valgt den rigtige database - altså den database, hvor den omtalte tabel eksisterer?
Avatar billede christian-s Nybegynder
15. april 2004 - 23:04 #13
ja, pressgroup eksisterer i den aktuelle database.
der maa vaere en fejl i koden, for naar jeg bruger en simpel forespoergsel, f.eks. SELECT * FROM pressgroup virker det fint!?
Avatar billede mikl-dk Nybegynder
15. april 2004 - 23:09 #14
Prøv at fjern a og b og se hvilken fejl, den så melder:

$sql = "SELECT press.*, pressgroup.*, author.* FROM press
LEFT JOIN pressgroup ON pressgroup.pgid = press.pgroup
LEFT JOIN author ON author.aid = press.pauthor
ORDER BY $order";
Avatar billede christian-s Nybegynder
15. april 2004 - 23:17 #15
tak, det var fejlen!

vil I dele lidt points?
Avatar billede dennismp Nybegynder
15. april 2004 - 23:21 #16
Lad bare mikl få dem.
Avatar billede mikl-dk Nybegynder
15. april 2004 - 23:25 #17
dennismp, så giver jeg en sving om ;)
Avatar billede christian-s Nybegynder
15. april 2004 - 23:41 #18
Tak skal I have, begge to!
Avatar billede mikl-dk Nybegynder
15. april 2004 - 23:44 #19
Takker for point!
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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