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:
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:
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?
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?