Hoi, ik heb een lekker simpel tabelletje :
dag date
produkt_ID bigint
prijs decimal
Voor elk produkt zijn de (dag)prijzen op meerdere dagen ingevoerd
Nu wil ik een historisch overzicht maken van de prijzen , maar dan telkens van een combinatie van 2 produkten en wat de prijs van die 2 samen was
(bv. produkt_ID 12 en 15 )
<?
$q="
SELECT dag ,sum(prijs) AS prijssamen
FROM prprijzen
WHERE produkt_ID='12' OR produkt_ID='15'
GROUP BY dag";
?>
Werkt prima, behalve als ik van 1 van de 2 produkten op een dag geen prijs heb ! Die moet overgeslagen worden ! (ik heb niets aan de prijs van 1 apart)
Hoe doe ik dat ?
behalve als ik van 1 van de 2 produkten op een dag geen prijs heb
Géén prijs staat hier.
Tip: Als je .. AND .. OR .. gebruikt, gebruik dan ( en ) om aan te geven welke bij elkaar horen. Dus ... AND ( ... OR ... ) of ( ... AND ... ) OR ...
@SanThe Ja, () die had ik ook
Maar heb al veel geprobeerd (kan het wel ?)
<?
$q="
SELECT dag ,sum(prijs) AS prijssamen
FROM prprijzen
WHERE (prijs > 0 AND produkt_ID='12' ) OR
( prijs > 0 AND produkt_ID='15' )
GROUP BY dag";
?>
Geeft zelfde resultaat , kan ook niet goed zijn!?
de op dag gegroepeerde resultaten moet dus 2 per dag zijn. is het er maar 1 op die dag dan wil ik die niet !
Maar hoe zeg je dat in MySQL ??
Nb. ik had al wel een oplossing in php bedacht maar lijkt me beter in sql . . . .
Ik ben niet zo'n ster in SQL maar ik zou 'm zo maken.
Dus SUM met hoofdletters en geen quotes om de getallen en de WHERE wat korter.
<?
$q="
SELECT dag ,SUM(prijs) AS prijssamen
FROM prprijzen
WHERE prijs > 0 AND (produkt_ID=12 OR
produkt_ID=15)
GROUP BY dag";
?>
SanThe de query werkt wel (die quotes had ik origineel niet hoor) maar doet niet wat bedoeling is, hij geeft gewoon een prijs als er maar 1 van de twee (op die dag) bestaat.
Bestond er ook niet iets waarmee je het aantal per GROUP kon tellen ? Dan kan je er iets aan vastplakken van " AND COUNT(GROUP) >= 2 " ??
"Als iets simpel lijkt, betekend dat nog niet dat het ook simpel is . . . . "