Probleem met product view in bestellingenbeheer
Orlando Smits
16/01/2014 10:39:38Hallo,
Voor een project ben ik bezig met een webwinkel en loop ik tegen het volgende probleem aan:
Een klant besteld een product en daarna moet hij of zij kunnen zien welke producten hij of zij besteld heeft.
Daartoe krijg ik wel het goede productnr er in. En daarnaast ook de goede hoeveelheid. Het probleem alleen is dat de naam en de prijs van het product altijd gelijk staan aan het eerste ingevoerde product.
Kan iemand mij helpen?
Hier de bijpassende SQL code:
$sqlbestelregel = "SELECT
`order_regel`.`product_id`,
`product`.`naam`,
`product`.`prijs`,
`order_regel`.`aantal`
FROM `order_regel`, `product`
WHERE `order_regel`.`order_inkooporder_id`='".$row["inkooporder_id"]."'
GROUP BY `order_regel`.`product_id`;";
Voor een project ben ik bezig met een webwinkel en loop ik tegen het volgende probleem aan:
Een klant besteld een product en daarna moet hij of zij kunnen zien welke producten hij of zij besteld heeft.
Daartoe krijg ik wel het goede productnr er in. En daarnaast ook de goede hoeveelheid. Het probleem alleen is dat de naam en de prijs van het product altijd gelijk staan aan het eerste ingevoerde product.
Kan iemand mij helpen?
Hier de bijpassende SQL code:
$sqlbestelregel = "SELECT
`order_regel`.`product_id`,
`product`.`naam`,
`product`.`prijs`,
`order_regel`.`aantal`
FROM `order_regel`, `product`
WHERE `order_regel`.`order_inkooporder_id`='".$row["inkooporder_id"]."'
GROUP BY `order_regel`.`product_id`;";
PHP hulp
28/11/2024 12:06:47Erwin H
16/01/2014 10:44:58Omdat je geen join voorwaarden geeft, zullen alle rijen uit de order_regel tabel aan alle rijen uit de product tabel worden gehangen, het cartesisch product zoals dat heet. Die join voorwaarde zal je in de where clause moeten opgeven als je een impliciete join maakt zoals je nu doet, of er een expliciete van maken met een on clause:
De GROUP BY kan (moet je zelfs) weglaten, aangezien je geen aggregate columns in je select hebt.
Code (php)
1
2
3
4
2
3
4
SELECT a.product_id, b.naam
FROM order_regel a
LEFT JOIN product b ON a.product_id = b.product_id
WHERE...etc
FROM order_regel a
LEFT JOIN product b ON a.product_id = b.product_id
WHERE...etc
De GROUP BY kan (moet je zelfs) weglaten, aangezien je geen aggregate columns in je select hebt.