PHP gevorderde |
|
Hallo
Ik heb een tabel met producten (dranken) en een tabel met bestellingen (bestellingen).
Nu wens ik uit de tabel producten alles te selecteren, en daarbij een som van de bestellingen van dit product.
Dit lukt:
$this->db->SELECT('dranken.id,dranken.naam,dranken.minimum_prijs,dranken.gewicht, SUM(bestellingen.aantal) AS totaalVerkocht');
$this->db->FROM('dranken');
$this->db->group_by('dranken.id');
$this->db->JOIN('bestellingen', 'bestellingen.drank_id = dranken.id',"left");
$this->db->SELECT('dranken.id,dranken.naam,dranken.minimum_prijs,dranken.gewicht, SUM(bestellingen.aantal) AS totaalVerkocht'); $this->db->FROM('dranken'); $this->db->group_by('dranken.id'); $this->db->JOIN('bestellingen', 'bestellingen.drank_id = dranken.id',"left");
Nu wil ik ook dat ik de enkel de bestellingen meetel voor een bepaalde datum.
$this->db->WHERE('bestellingen.date <=',$whereDate);
$this->db->WHERE('bestellingen.date <=',$whereDate);
Dit geeft echter enkel de producten weer die een bestelling hebben in deze periode. Dus als er nog geen bestellingen zijn worden deze niet opgenomen.
Daarom dacht ik om een extra WHERE aan toe te voegen.
$this->db->OR_WHERE('bestellingen.date',NULL);
$this->db->OR_WHERE('bestellingen.date',NULL);
Dit zorgt er voor dat alle producten worden weergeven die ook nog geen bestellingen hebben.
Echter bots ik nu op een probleem. Als er een product is met een bestelling die valt na de periode die ik wens is valt deze uit de resultaten. Hij voldoet namelijk niet aan WHERE statement. Logisch ook, maar dan zou ik eigenlijk liever NULL zien.
Ik dacht dat een LEFT JOIN ervoor zorgde dat alles uit de eerste tabel (hier dranken) zeker in het resultaat zat.
Hoe kan ik dit oplossen?
|