spezielle MySQL Abfrage

S

StephanSch

Aktives Mitglied
Thread Starter
Dabei seit
24.07.2006
Beiträge
406
Reaktionspunkte
1
Beispiel: Ich habe in meiner Datenbank 2 Felder eines heißt ID und das andere DateDay

Nun sollte die Abfrage wie folgt aussehen: Wenn eine ID in dieser Tabelle öfters als 5 mal am heutigen Tag eingetragen ist, soll mir meine Datenbankabfrage diese ID oder mehrere IDs, die die Bedingung erfüllen ausgeben.

So sieht es bisher aus und sollte mit der obigen Bedingung erweitert werden:
$abfrage = mysql_query("SELECT * FROM Tabelle WHERE DateDay = ".$filterPeriodConstantValue." ORDER BY ID DESC");
 
Zuletzt bearbeitet:
Hallo,

ich nehme mal an dass die Variable $filterPeriodConstantValue den Wert des aktuellen Tages hat.

Wenn dem so ist, dann versuch's mal so:

"SELECT ID, COUNT(DateDay)
FROM Tabelle
WHERE DateDay = ".$filterPeriodConstantValue."
GROUP BY ID
HAVING COUNT(DateDay)>5
ORDER BY ID DESC;"
 
Super,danke für die schnelle Antwort, das funktioniert einwandfrei!
 
Gern geschehn, freut mich wenn ich auch mal helfen konnte anstatt nur Hilfe zu konsumieren... ;)
 
So weit so gut...es geht aber noch weiter ;-)

"SELECT ID, COUNT(DateDay)
FROM Tabelle
WHERE DateDay = ".$filterPeriodConstantValue."
GROUP BY ID
HAVING COUNT(DateDay)>5
ORDER BY ID DESC;"

Wenn ich nun noch ein weiteres Feld in der Tabelle habe, das "Category" heißt...und ich die Abfrage wie folgt erweitern möchte:
Wenn eine ID öfters als 5 mal am heutigen Tag eingetragen ist und 5 mal der selbe Wert in dem Feld "Category" steht, soll er mir die ID ausgeben....

Wie soll das nun gehen? :-/
 
Oh man das ist ja ganz einfach^^ Du hast mir die Antwort mit dem obigen Beispiel im Grunde genommen ja schon gegeben... ;-)

SELECT *
FROM AccessList
WHERE DateDay = ".$filterPeriodConstantValue."
GROUP BY Category HAVING COUNT(IP) >= 5
ORDER BY ID DESC;
 
Hm ne, so ist es doch nicht ganz richtig....nun fasst die sql abfrage ja alle IPs zusammen, die den selben Wert in Category haben...

SELECT *
FROM AccessList
WHERE DateDay = ".$filterPeriodConstantValue." AND Category = '".$Category[$Counter]."'
GROUP BY IP HAVING COUNT(Category) >= 5
ORDER BY ID DESC;

Ich habe mich nun etwas unbeholfen geholfen ;-) , in dem ich eine Schleife um die Abfrage und der Schleife der Ausgabe gelegt habe und nun zusätzlich nach bestimmten Werten suche, die im Array $Category stehen. Nach jedem Durchlauf der äußeren Schleife wird der Counter hochgezählt und das Array gibt einen anderen Wert in der MySQL Abfrage aus und prüft entsprechend darauf. Das funktioniert nun zwar so, wie ich mir das vorstelle, aber das muss doch auch eleganter und kürzer gehen, direkt in der MySQL Abfrage?
 
Zuletzt bearbeitet:
zumindest gehören SQL-Abfragen auch zu Datenbanken ;)
 
Zurück
Oben Unten