Query met 2x JOIN naar dezelfde tabel ??

Status
Niet open voor verdere reacties.

jansbl

Gebruiker
Lid geworden
1 mrt 2007
Berichten
86
Hallo,

Ik heb een bestand met o.a. de tabellen persoonsnamen en plaatsnamen.
Geen adressen, postcodes e.d.

De tabel persoonsnamen kan 2x verwijzen naar de plaatsnamen:
1x als geboorteplaats
1x als plaats van overlijden (indien al van toepassing).

De volgende query werkt voor de eerste verwijzing.
Code:
$sql ="SELECT * FROM personen JOIN plaatsen ON personen.art_geb_plaats = plaatsen.plaats_id" ;
Hiermee krijg ik dus alle personen en hun geboorteplaats.
Behalve de kolom personen.art_geb_plaats, heb ik ook nog een kolom personen.art_overl_plaats.
Hierin verwijs ik ook naar de plaatsen.plaats_id.

Hoe kan ik de query schrijven om ook de plaats van overlijden te krijgen, indien dit is ingevuld?

B.v.d.,

Jans
 
Zoiets?
PHP:
SELECT *
FROM   personen
JOIN   plaatsen pl_geb ON personen.art_geb_plaats = plaatsen.plaats_id
LEFT JOIN   plaatsen pl_ovl ON personen.art_overl_plaats = plaatsen.plaats_id
Gebruik "LEFT JOIN" om ervoor te zorgen dat wanneer er geen match is met de tabel plaatsen het record toch getoond wordt.
 
Met pl_geb en pl_ovl geef je de tabel een alias. Is een gewoonte van me om minder te hoeven typen, maar is niet noodzakelijk.

Krijg je een foutmelding?
 
Met pl_geb en pl_ovl geef je de tabel een alias. Is een gewoonte van me om minder te hoeven typen, maar is niet noodzakelijk.

Krijg je een foutmelding?
Nee, krijg geen foutmelding, maar gewoon geen uitvoer.
Bovenstaande geldt als ik de query gebruik in een php script.

Als ik de query uitvoer in phpMyAdmin, krijg ik de volgende foutmelding:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$sql ="SELECT * FROM `snert_muziek_artiesten` JOIN `snert_muziek_plaatsen` `pl_' at line 1

(Let niet op de tabelnamen. In mijn vraag heb ik de tabelnamen wat simpeler opgesteld)

Jans
 
Laatst bewerkt:
Ik heb even zitten testen en volgens mij moet je doordat je 2 keer dezelfde tabel benaderd toch met aliassen werken. Ik krijg het in ieder geval zonder niet voor elkaar. Je krijgt dan dit:
PHP:
SELECT * 
FROM   personen 
JOIN   plaatsen pl_geb ON personen.art_geb_plaats = pl_geb.plaats_id 
LEFT JOIN   plaatsen pl_ovl ON personen.art_overl_plaats = pl_ovl.plaats_id
 
Het werkt wel.

Hi Epic,

De 1064 foutmelding kwam omdat ik een " (aanhalingsteken) teveel had gebruikt.

Maar ik heb ook de oorzaak gevonden dat het bij mij niet werkte:

Jij hebt aliassen gebruikt, maar verder niet meer gebruikt.

......... Ik zie net dat je ook tot die conclusie bent gekomen.
Met jouw laatste query werkt het uitstekend :).

Bedankt,

Jans
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan