[MySQL] Join 2 tabellen joinen op 1 tabel

Pagina: 1
Acties:

  • Speed_Sheep
  • Registratie: Augustus 2001
  • Laatst online: 25-11-2021
Ik moet een join met 3 tabellen maken. Wat ik wil is 2 tabellen joinen op 1 tabel.
Ik heb veel gevonden wat inhield: Haal alles van tabel A op. Haal bij A alle gegevens die je kunt vinden uit tabel B op. En haal bij tabel B ook alle gegevens uit C op. Dat is echter niet wat ik moet hebben. Mijn situatie is het volgende:

Tabel leveringsproduct
id label
1 test
2 nog iets
3 en nog iets

Tabel levering
id leveringsproductid hoeveelheid
1 1 100
2 1 300
3 3 500

Tabel leverplan
id leveringsproductid hoeveelheid
1 2 1000
2 1 2000
3 3 1500

Bij leveringsproducten KUNNEN meerdere leveringen zitten.
Bij leveringsproducten KUNNEN meerdere leverplannen zitten.
Om deze gegevens op te halen kun je de volgende 2 query's gebruiken en later met php de boel gaan uitzoeken:
SQL:
1
2
3
4
SELECT lpr.*, l.*
FROM leveringsproduct AS lpr
LEFT JOIN levering AS l
ON l.leveringsproductid = lpr.id


SQL:
1
2
3
4
SELECT lpr.*, lpl.*
FROM leveringsproduct AS lpr
LEFT JOIN leveringplan AS lpl
ON lpl.leveringsproductid = lpr.id

Bovenste query's gaan goed. De 1e haalt alle leveringsproducten op met eventueel de daarbij behorende leveringen. De 2e haalt alle leveringsproducten op met eventueel de daarbij behorende leverplannen.

Echter wil ik dit in 1 query kunnen doen, die ik zo bedacht heb:
SQL:
1
2
3
4
5
6
SELECT lpr.*, l.*, lpl.*
FROM leveringsproduct AS lpr
LEFT JOIN levering AS l
ON l.leveringsproductid = lpr.id
LEFT JOIN leveringplan AS lpl
ON lpl.leveringsproductid = lpr.id

Query wordt wel uitgevoerd, maar dit resulteert niet in goede data. Er wordt nu namelijk bij elk leveringsproducten wel de eventuele leveringen en leverplannen opgehaald. Maar indien er leveringen en leverplannen bij een leveringsproduct zijn, worden deze ook dubbel verwerkt:
id label id leveringsproductid hoeveelheid id leveringsproductid hoeveelheid
1 test 1 1 100 1 1 1000
1 test 1 1 100 2 1 2000
1 test 2 1 300 1 1 1000
1 test 2 1 300 2 1 2000

Hierbij heb ik wel geprobeerd een distinct toe te voegen aan beide tabellen op hun id's maar dit resulteert in een mysql error.
Hoop dat jullie begrijpen wat ik wil, zoniet, geef het aan, dan maak ik m'n uitleg nog iets uitgebreider ;)
Iemand een idee?

Systeemspecs


  • Jig
  • Registratie: Mei 2003
  • Laatst online: 25-03 09:22

Jig

Als je 2x een join doet moet je het eerste resultaat wel tussen haakjes doen.
(tbl1 INNER JOIN tbl2 ON bla) INNER JOIN tbl3 ON bla