SELECT   p_category as mainCat, MAX(p_qty)
FROM     products
GROUP BY p_category


geeft mij wel resultaat, maar hier wil ik eigenlijk nog waar MAX(p_qty) > 4.
Als ik dit in WHERE zet krijg ik foutmeldingen :-( ok als ik in SELECT MAX(p_qty) as quantity, en in de WHERE quantity > 4, krijg ik ook foutmeldingen.

Hoe ga ik hier het beste mee om? Zonder het met php nog eens na te lopen of de qty wel groter is dan 4
Ik zou dat met een subquery oplossen.

SELECT
	*
FROM (
	SELECT
		p_category, MAX(p_qty) AS max_qty
	FROM
		products
	GROUP BY
		p_category
	) p 
WHERE
	p.max_qty > 3
Uhm ehhh ... gewoon die MAX weglaten misschien? ;-)

Edit: volgens mij was ik iets te voorbarig ...
huh ... maar.. HEH!!!??? snap er niks van :-/
doe je nou een SELECT * van 'FROM-results' ?
Ja de subquery wordt als eerste uitgevoerd. Het resultaat kun je je voorstellen als een nieuwe tabel. Op deze tabel doe je weer een nieuwe query.
Frank Nietbelangrijk op 15/10/2016 21:19:13

Ja de subquery wordt als eerste uitgevoerd. Het resultaat kun je je voorstellen als een nieuwe tabel. Op deze tabel doe je weer een nieuwe query.


awesome, weer wat cools geleerd!
Duizend maal dank!
Het is niet eens nodig om dit met een subquery te doen:

SELECT
        p_category, MAX(p_qty) AS max_qty
FROM
        products
GROUP BY
        p_category
HAVING max_qty > 4
>> Het is niet eens nodig om dit met een subquery te doen

Met HAVING natuurlijk :-)

Dank je wel Ger.
Staat genoteerd Ger! Ook jij heel erg bedankt!

Ik neem aan dat het gebruik van HAVING sneller is dan een subquery?
Databases zijn slim (nouja, de betere databases zijn slim) en kunnen je query optimaliseren omdat ze al een idee hebben van hoeveel records er in de tabel staan per waarde van p_category, dus ja, het kan heel goed zijn dat een HAVING sneller is dan een subquery, ookal doen geven ze hetzelfde resultaat.

Maar meten is weten en gokken wordt bokken, dus gebruik het EXPLAIN commando om te meten hoe lang je query er precies over doet en wat de database intern allemaal uitvlooit om het resultaat te berekenen. Daarmee komen ook meteen ontbrekende indexes aan het licht, evenals gebrekken aan RAM etc.

Reageren