Archief - Bizar HAVING probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Cyberkef

Legacy Member
Ik ben hier vanavond wat aan het experimenteren geslaan met een tabel in MySQL waar onder andere een kolom log_request_uri zit (met $_SERVER['request_uri'] 's waaronder dus een boel '/' waarden) en een kolom log_sections (gewone strings).

Een eerste query zorgt ervoor dat ik aan mijn sections geraak die ik in een while lusje zet...

PHP:
mysql_query("SELECT DISTINCT log_section FROM cyb_log");

So far zo good, ik heb atm drie secties eringestoken, en ik krijg die ook mooi terug.

Nu doe ik een doodsimpele query in die while lus à la:
PHP:
		mysql_query("
			SELECT
				log_section, log_request_uri, count(log_request_uri) as nbIncoming
			FROM
				cyb_log
			GROUP BY
				log_request_uri
			HAVING
				log_section = '" . $res['log_section'] . "'
		") or die('<strong>MySQL Connect Error:</strong><br />' . mysql_error());

... waarbij ik dus verwacht dat ik een lijstje krijg van request_uri's en hoeveel keer ze erin voorkomen.

Bij de eerste section krijg ik de count van ALLE "/" waarbij hij dus precies geen having toepast, en bij de tweede en derde section GEEN count van "/" :wtf:

De rest van de request_uri's doet ie wel perfect.

Doe ik hier nu iets verkeerd? Kijk ik over iets? Of is dit een bug?

passero

Legacy Member
moet die having niet gewoon de where clause worden?


SELECT
log_request_uri, count(log_request_uri) as nbIncoming
FROM
cyb_log
WHERE
log_section = '" . $res['log_section'] . "'
GROUP BY
log_request_uri

Je neemt dan ook best die log_section uit je select kolommen.

Welke 3 sections heb je? Misschien ligt het daar aan.

Cyberkef

Legacy Member
Ahaaaaa dat werkt, merci :D

En tiens, wist niet dat je GROUP BY kon doen met een where ipv having, neat-o... een mens leert nog alle dagen bij :)

passero

Legacy Member
die where wordt VOOR de group by gedaan. Is in princiepe performanter want nu ga je eerst de resultaten filteren en dan groeperen op een subset. Terwijl met een having ga je groeperen op ALLE records en dan pas filteren.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan