User aus DB auslesen welcher die meisten Einträge hat.
Simon
- php
Hi,
hab da ein Kleines Problem:
ich hab eine MYSQL DB in der sich User Id's und andere Einträge befinden:
Da es mehrer Einträge/UserId gibt würde jetzt gerne die User Id herausfinden welche am öftesten vorkommt und wo eine andere Spalte 0 ist.
So falls nicht ganz verständlich:
--------------------------
ID | UserId | eintrag |
--------------------------
1 | 232424 | 0 |
2 | 232424 | 1 |
3 | 748328 | 0 |
4 | 232424 | 0 |
5 | 748328 | 0 |
6 | 232424 | 1 |
7 | 748328 | 0 |
8 | 232424 | 1 |
9 | 495929 | 0 |
10 | 232424 | 1 |
Ich habe 6 Einträge des Users 232424 und 2 davon sind 0,
3 Einträge des Users 748328 und 3 davon sind 0
und 1 Eintrag des Users 495929 welcher 0 ist.
In diesen Beispiel müsste es mir den User 748328 liefern. Er hat zwar nicht am meisten Einträge in der DB aber die meisten Einträge die auf 0 sind.
Kann ich das bereits bei der Abfrage machen?
MfG
Simon
Hi,
Da es mehrer Einträge/UserId gibt würde jetzt gerne die User Id herausfinden welche am öftesten vorkommt und wo eine andere Spalte 0 ist.
GROUP BY/COUNT/MAX
MfG ChrisB
Ok,
SELECT
UserID
,
count(eintrag)
FROM
DB
WHERE
UserId
= ?
GROUP BY UserID
';
Aber was soll ich jetzt mit dem MAX machen?
Mahlzeit Simon,
WHERE
UserId
= ?
Was soll das? Du willst doch die passende UserId erst *herausfinden* - dann kannst Du sie doch nicht als Suchkriterium nutzen ...
Du willst (vermutlich):
jede UserId
und die Anzahl der Datensätze
bei denen eintrag
gleich 0 ist
gruppiert nach den UserIds
Jetzt übersetze das bitte mal nach SQL.
Aber was soll ich jetzt mit dem MAX machen?
Du wolltest doch denjenigen User, für den die meisten Einträge existieren?
MfG,
EKKi
Was soll das? Du willst doch die passende UserId erst *herausfinden* - dann kannst Du sie doch nicht als Suchkriterium nutzen ...
Sorry, hab da grad alles durcheinander gebracht.
So sollte es eigentlich passen ohne dem Max, weil ich nicht weiß wo ich den "einbauen" soll:
$sql = 'SELECT
`UserId`,
count(eintrag)
FROM
`DB`
WHERE
`eintrag` = 0
GROUP BY
`UserId`';
Kannst du mir da bei MAX helfen?
Mahlzeit Simon,
$sql = 'SELECT
UserId
,
count(eintrag)
FROM
DB
WHERE
eintrag
= 0
GROUP BY
UserId
';
Wie sieht die Ergebnismenge aus? Kannst Du damit bereits etwas anfangen? Könntest Du Dir vorstellen, welches Vorgehen sinnvoll wäre, um die von Dir gewünschte Information zu erhalten?
> Kannst du mir da bei MAX helfen?
Könnte ich. Die [MySQL-Dokumentation](http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_max) könnte das auch.
MfG,
EKKi
--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
Wie sieht die Ergebnismenge aus? Kannst Du damit bereits etwas anfangen? Könntest Du Dir vorstellen, welches Vorgehen sinnvoll wäre, um die von Dir gewünschte Information zu erhalten?
Ja mit dem Ergebnis kann ich noch nicht viel anfangen. Ich bekomme zwar die Anzahl an einträgen einer ID aber eben nicht das Max.
Könnte ich. Die MySQL-Dokumentation könnte das auch.
^^ ja ich weiß, hab auch schon nachgeschaut, nur hab ich mein Problem um das Maximum von count zu bekommen.
So, hab es jetzt so gemacht und es scheint auch zu funktionieren:
$sql = 'SELECT
`UserId`,
count(eintrag) as count
FROM
`DB`
WHERE
`eintrag` = 0
GROUP BY
`UserId`
ORDER BY
`count` desc
LIMIT
1';
Mfg
Simon
So, hab es jetzt so gemacht und es scheint auch zu funktionieren:
Ja, sollte funktionieren - aber ist sehr sehr dreckig.
Welches Problem hast du eine Funktion mit einem 3 Zeichen langen Funktionsnamen an geeigneter Stelle "herumzuwickeln"?
Mahlzeit Simon,
Wie sieht die Ergebnismenge aus? Kannst Du damit bereits etwas anfangen? Könntest Du Dir vorstellen, welches Vorgehen sinnvoll wäre, um die von Dir gewünschte Information zu erhalten?
Ja mit dem Ergebnis kann ich noch nicht viel anfangen.
Ich mit Deiner Antwort auch nicht. Ich hatte nach der Ergebnismenge gefragt.
Ich bekomme zwar die Anzahl an einträgen einer ID aber eben nicht das Max.
Wie wär's, wenn wir den den ersten Schritt vor dem zweiten und den dritten erst zum Schluss machen? ;-)
^^ ja ich weiß, hab auch schon nachgeschaut, nur hab ich mein Problem um das Maximum von count zu bekommen.
Das wissen Dein Leser - das hast Du schließlich schon in Deinem ersten Beitrag geschrieben. Wenn Du es ihnen aber schwer machst, Dir Schritt für Schritt zu helfen, indem Du auf gezielte Nachfragen nicht eingehst, sinken Deine Chancen, zielführende Hilfe zu bekommen, rapide gegen 0.
MfG,
EKKi
Ok, mein letztes Problem ist ja nur mehr die funktion max einzubinden oder wie Suit sagt "herumzuwickeln".
Funktionieren würde es ja auch nur eben viel zu umständlich.
Nur max(count(eintrag)) geht ja nicht oder ?
Nur max(count(eintrag)) geht ja nicht oder ?
Nein, eine kleine Unterabfrage wirst du afaik schon brauchen.