Group by
Beste forum leden!
Waarschijnlijk een kleinigheidje maar het wil niet lukken. De originele query:
Nu wil ik dat er geen dubbele items vanuit sku en ean geselecteerd worden. Enkel de goedkoopste. Resultaat (group by en min toegevoegd):
Jammer genoeg werkt het niet. Wat doe ik fout?
Alvast bedankt!
Waarschijnlijk een kleinigheidje maar het wil niet lukken. De originele query:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$query = mysql_query("
SELECT id, fabrikant, naam, afbeelding_thumb, prijs, omschrijving_kort, afbeelding_low, sku, ean
FROM producten_new
WHERE id IN (".$query5_ids.")
ORDER BY fabrikant ASC,".$sorteren."
LIMIT ".$offset.", ".$items_per_pagina
);
SELECT id, fabrikant, naam, afbeelding_thumb, prijs, omschrijving_kort, afbeelding_low, sku, ean
FROM producten_new
WHERE id IN (".$query5_ids.")
ORDER BY fabrikant ASC,".$sorteren."
LIMIT ".$offset.", ".$items_per_pagina
);
Nu wil ik dat er geen dubbele items vanuit sku en ean geselecteerd worden. Enkel de goedkoopste. Resultaat (group by en min toegevoegd):
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$query = mysql_query("
SELECT id, fabrikant, naam, afbeelding_thumb, MIN(prijs), omschrijving_kort, afbeelding_low, sku, ean
FROM producten_new
WHERE id IN (".$query5_ids.")
GROUP BY sku, ean
ORDER BY fabrikant ASC,".$sorteren."
LIMIT ".$offset.", ".$items_per_pagina
);
SELECT id, fabrikant, naam, afbeelding_thumb, MIN(prijs), omschrijving_kort, afbeelding_low, sku, ean
FROM producten_new
WHERE id IN (".$query5_ids.")
GROUP BY sku, ean
ORDER BY fabrikant ASC,".$sorteren."
LIMIT ".$offset.", ".$items_per_pagina
);
Jammer genoeg werkt het niet. Wat doe ik fout?
Alvast bedankt!
Gewijzigd op 21/04/2011 20:15:27 door Roy D
Gesponsorde koppelingen:
1. zorg dat je mysql goed configureerd
2. zorg dat je GROUP BY klopt, dat houdt in dat je alle velden dient te benoemen in de GROUP BY die niet gerelateerd zijn aan de aggragate functions MIN/MAX/SUM/COUNT/AVG enz
3. key de query eens toe aan een variabele dan kan je die echoen en kan je gelijk ook zien wat er als query uitgevoerd gaat worden
2. zorg dat je GROUP BY klopt, dat houdt in dat je alle velden dient te benoemen in de GROUP BY die niet gerelateerd zijn aan de aggragate functions MIN/MAX/SUM/COUNT/AVG enz
3. key de query eens toe aan een variabele dan kan je die echoen en kan je gelijk ook zien wat er als query uitgevoerd gaat worden
Draait bij een knappe hosting, mysql zal goed geconfigureerd zijn.
Ook een echo is aanwezig waarbij ik de resultaten zie, helaas nog steeds dubbele producten, met dezelfde sku of ean.
Dus als ik het goed begrijp:
Er wordt op deze wijze toch niet aangegeven dat er geen dubbele sku en ean velden geselecteerd moeten worden?
Gebruik ik wel de juiste functie's hiervoor? Group by en min?
Ook een echo is aanwezig waarbij ik de resultaten zie, helaas nog steeds dubbele producten, met dezelfde sku of ean.
Dus als ik het goed begrijp:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$query = mysql_query("
SELECT id, fabrikant, naam, afbeelding_thumb, MIN(prijs), omschrijving_kort, afbeelding_low, sku, ean
FROM producten_new
WHERE id IN (".$query5_ids.")
GROUP BY id, fabrikant, naam, afbeelding_thumb, omschrijving_kort, afbeelding_low, sku, ean
ORDER BY fabrikant ASC,".$sorteren."
LIMIT ".$offset.", ".$items_per_pagina
);
SELECT id, fabrikant, naam, afbeelding_thumb, MIN(prijs), omschrijving_kort, afbeelding_low, sku, ean
FROM producten_new
WHERE id IN (".$query5_ids.")
GROUP BY id, fabrikant, naam, afbeelding_thumb, omschrijving_kort, afbeelding_low, sku, ean
ORDER BY fabrikant ASC,".$sorteren."
LIMIT ".$offset.", ".$items_per_pagina
);
Er wordt op deze wijze toch niet aangegeven dat er geen dubbele sku en ean velden geselecteerd moeten worden?
Gebruik ik wel de juiste functie's hiervoor? Group by en min?
Gewijzigd op 21/04/2011 20:27:58 door Roy D
Je zal in je where ook nog toe moeten voegen dat je de goedkoopste producten wil zien. Dat lukt namelijk niet met een SELECT........MIN(prijs). Je groepeert op id en die zijn waarschijnlijk allemaal verschillend dus je krijgt ze allemaal te zien.
Gewijzigd op 21/04/2011 20:37:58 door Aad B
producten_new ...?
Ik kom er nog steeds niet uit.
Een eenvoudigere query:
Hoe selecteer ik het goedkoopste product waar sku of ean bij 2 producten gelijk zijn? (en sku/ean niet leeg is)
Toevoeging op 18/05/2011 11:29:04:
Nog een schopje omhoog (A)
Een eenvoudigere query:
Code (php)
1
2
3
4
2
3
4
SELECT id, name, price, sku, ean
FROM products
WHERE id IN (1,2,3,4,5,6)
ORDER BY name ASC
FROM products
WHERE id IN (1,2,3,4,5,6)
ORDER BY name ASC
Hoe selecteer ik het goedkoopste product waar sku of ean bij 2 producten gelijk zijn? (en sku/ean niet leeg is)
Toevoeging op 18/05/2011 11:29:04:
Nog een schopje omhoog (A)



