Ik gebruik de volgende query:
<?php
$query_Recordset = "
SELECT *, count(oid)
FROM content
LEFT JOIN (orders)
ON (content.contentid = orders.orderid)
WHERE adddate > '" . date('Y-m-d') . " 00:00:00'";
Je kan functies als MIN, MAX en COUNT alleen gebruiken als je ook gebruik maakt van Group By
Dat is niet waar, je kan MIN, MAX, COUNT prima gebruiken zonder group by. Alleen in dat geval wordt de group functie uitgevoerd over alle records.
Dat gezegd hebbende, de foutmelding gaat daar blijkbaar wel over. Ik ken het probleem op zich niet, maar het ziet ernaar uit dat als je een GROUP BY gebruikt je ervan verlost wordt.
Dat is niet waar, je kan MIN, MAX, COUNT prima gebruiken zonder group by. Alleen in dat geval wordt de group functie uitgevoerd over alle records.
Dit klopt wel maar is heel erg kort door de bocht en verwarrend voor beginners. TS moet om te beginnen niet SELECT * gebruiken maar zijn attributen benoemen. Vervolgens moet hij kijken of hij ook inderdaad al deze attributen wil groeperen. Nadenken dus over je query, niet zomaar wat GROUP BY toevoegen! @TS: Werk die * eens uit en laat dat zien hier.
[quote="Erwin H op 09/01/2012 11:45:57"]
Dat is niet waar, je kan MIN, MAX, COUNT prima gebruiken zonder group by. Alleen in dat geval wordt de group functie uitgevoerd over alle records.
Dit klopt wel maar is heel erg kort door de bocht en verwarrend voor beginners. TS moet om te beginnen niet SELECT * gebruiken maar zijn attributen benoemen. Vervolgens moet hij kijken of hij ook inderdaad al deze attributen wil groeperen. Nadenken dus over je query, niet zomaar wat GROUP BY toevoegen! @TS: Werk die * eens uit en laat dat zien hier.
[/quote]
Waarom moet ik die 1 voor 1 benoemen als ik ze allemaal nodig heb, wat is hier de meerwaarden van?
[size=xsmall]Toevoeging op 09/01/2012 12:40:30:[/size]
Smur f op 09/01/2012 12:07:54
WHERE addate > NOW()
Ietsje netter dan het met php oplossen.
Als ik dat doet pakt die ze niet meer vanaf 00:00:00 maar van de tijd die het op dat moment pas is.
De meerwaarde is dat je niet GROUP BY * kan doen, je moet ze dus benoemen. Verder is het raadzaam om altijd je attributen te benoemen, dat geeft minder problemen wanneer je je tabel wijzigt, bijvoorbeeld een veld erbij. SELECT * haalt dan overal meteen dat extra veld op waardoor er veel in je programmatuur aangepast moet worden terwijl je dat extra veld misschien maar in 1 of 2 programma's nodig hebt.
Het is sneller en toekomstbestendiger. Als je later bijvoorbeeld een kolom toevoegt die je helemaal niet nodig hebt krijg je die wel automatisch in je resultset. Als je een kolom een andere naam geeft lijkt er in je SQL statement niets aan het handje (die * werkt nog steeds), maar verderop in je code kan het opeens wel vreemd gedrag gaan vertonen. Terwijl als je alle kolommen benoemt krijg je in elk geval een foutmelding als de kolommen in eens niet meer kloppen.