2x door dezelfde tabel heen joinen

Status
Niet open voor verdere reacties.

Sigorei

Gebruiker
Lid geworden
18 aug 2007
Berichten
36
Hallo,

Onderstaand een mysql query. De query is werkend. Alle gegevens van een bepaald artikel worden netjes opgehaald. Ik zit nog met 1 probleem. Ik moet 2x door dezelfde tabel heen joinen. Er ontstaat een probleem bij de vetgedrukte joins. Onderstaand de query:

SELECT producten.artikelcode_leverancier, producten.minimumafname, producten.code_kortingsgroep, artikelprijs.brutoprijs, artikelprijs.aant_prijseenh_per_prijs, arttoko.toeslag_kortingsbedrag, icc.korting, icc.netto_artikelprijs

FROM producten

LEFT JOIN artikelprijs ON producten.artikelcode_leverancier = artikelprijs.artikelcode_leverancier

LEFT JOIN arttoko ON producten.artikelcode_leverancier = arttoko.artikelcode_leverancier

LEFT JOIN icc ON producten.artikelcode_leverancier = icc.artikelcode_leverancier

LEFT JOIN icc ON producten.code_kortingsgroep = icc.code_kortingsgroep


WHERE producten.artikelcode_leverancier =110300

Ik probeer 2x te joinen door dezelfde tabel. 1x door de tabel code_kortingsgroep en 1x door de tabel artikelcode_leverancier. Ik kom er nu achter dat je met LEFT JOIN maar 1 keer door dezelfde tabel mag joinen. Is hier een oplossing voor ? Ik las iets met aliassen maar ik snap niet hoe je dit voor elkaar krijgt.

Alvast bedankt voor uw antwoord!

Groeten Sigorei
 
Je moet inderdaad een alias gebruiken; wat er eigenlijk op neer komt dat je de tabel tijdelijk een andere naam geeft zodat mySQL de twee tabellen uit elkaar kunt houden. Je moet de nieuwe naam dan gebruiken bij alle velden (zowel in select als where etc) om het duidelijk te houden.

Dat gaat zo:

[sql]
SELECT t1.veld1, t2.veld2
FROM een_tabel AS t1
LEFT JOIN een_tabel AS t2 ON t1.veld3 = t2.veld4
WHERE t1.veld5 = 'een waarde' AND t2.veld6 = 'een andere waarde'
[/sql]

Hierbij heb je dus 1 tabel genaamd "een_tabel" met 6 velden ( veld1, veld2, etc ) en de query zoekt in beide kopieën verschillende velden op.

Het "AS" keyword kun je gebruiken om velden en tabellen tijdelijk te hernoemen (werkt ook in de select, handig als je bij SUM gebruiken zodat het veld in PHP een logische naam krijgt)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan