PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP/SQL] Query zum Zählen von Datensätzen?



DS_BoneDaddy
18.09.2004, 00:24
Nabend...
Nach langem hin und her im Handbuch und Rumprobieren gebe ich es auf und wende mich mal an euch. ;-)

Mein Vorhaben:
Zählen welcher User wie oft etwas geschrieben hat.

Die Daten:


-----------------------
| id | user_id | post |
-----------------------
| 01 | 1111111 | 1234 |
| 02 | 1111111 | 1234 |
| 03 | 2222222 | 1234 |
| 04 | 2222222 | 1234 |
| 05 | 3333333 | 1234 |
-----------------------

Ich möchte nun herausbekommen, dass User 1 insgesamt 2x etwas zum "Post" 1234 geschrieben hat, User 2 ebenfalls 2x und User 3 eben 1x.

Danke für eure Hilfe!

Procyon
18.09.2004, 11:06
Tach erstmal

select count(`id`) as `count_posts` from `table` where `user_id`=11111111 and `post`=1234

ergibt eine ergebnistabelle mit der spalte count_posts. die einzige ergebniszeile enthält dann in der spalte count_posts die anzahl der posts dieses einen users zu einem thema.

DS_BoneDaddy
18.09.2004, 11:29
Original geschrieben von Procyon
Tach erstmal

select count(`id`) as `count_posts` from `table` where `user_id`=11111111 and `post`=1234

ergibt eine ergebnistabelle mit der spalte count_posts. die einzige ergebniszeile enthält dann in der spalte count_posts die anzahl der posts dieses einen users zu einem thema.

Fast das was ich brauche. dankeschön!

Nur möchte ich nicht vorgeben welche User_id erzählen soll, sondern ich möchte einfach die ersten 3 User haben, die am meisten zum Post "1234" geschrieben haben.
Hab schon probiert es umzustellen, aber kriege es nicht hin.

GevatterBaer
18.09.2004, 14:41
mysql_query("SELECT *, count(*) AS 'count_posts' FROM table WHERE post = 1234 LIMIT 3
");

Versuchs mal so ;)

Georg
20.09.2004, 21:21
Da fehlt noch ein "ORDER BY count_posts DESC" vor dem Limit-Eintrag, würde ich sagen und das * ist überflüssig und würde zu zu vielen Reihen führen. Außerdem muss man das noch gruppieren:



SELECT COUNT(*) AS posts, user_id
FROM table
WHERE post = 1234
GROUP BY user_id
ORDER BY posts DESC
LIMIT 3

GevatterBaer
20.09.2004, 21:24
Sollte auch nur ein Denkanstoß sein, fast & dirty.

Georg
20.09.2004, 21:32
War ja keine Kritik, nur eine Ergänzung zur Lösung ;)

Des weiteren sind die ' ' um das count_posts kein gültiges SQL, sondern eine (sinnlose) mysql-Erfindung *motz* ;D ;)

GevatterBaer
20.09.2004, 21:34
Wenn ich es mir angucke, fällt mir auf, dass ich es normalerweise auch gar nicht mache. Aber per Hand schreibe ich sowieso keine Queries mehr, dafür ich ich Funktionen die mir das abnehmen :)

EoR
04.10.2004, 17:15
Georgs antowort iss richtig. :-)
das group by user ist wichtig .....