Ich habe eine Herausforderung, mit der ich nicht umgehen kann.Wie bekomme ich TOP 10 in MySQL mit kombinierten Datenzeilen?
+------+--------+-----------+-------+
| id | user | genres | books |
+------+--------+-----------+-------+
| 1 | John | crimes | 2 |
| 2 | John | scienc | 1 |
| 3 | John | nature | 4 |
| 4 | Pete | nature | 3 |
| 5 | Pete | crime | 2 |
| 6 | Mary | nature | 20 |
+------+--------+-----------+-------+
Ich möchte eine SQL-Abfrage, die die Gesamtmenge der Bücher bekommt die Benutzer besitzen, ganz gleich das Genre und möchte sie durch ORDER, die am meisten hat.
In diesem Beispiel sehen Sie, dass Mary 20 Bücher hat, Pete 5 und John hat 7 so würde mein gewünschtes Ergebnis wie einen Array sein:
result[0][user] = "Mary";
result[0][total] = 20;
result[1][user] = "John";
result[1][total] = 7;
result[2][user] = "Pete";
result[2][total] = 5;
Wie kann ich dies in eine SQL bekommen? Soll ich CONCAT oder TOP oder sowas benutzen? Ich benutze MySQL & PHP.
Wenn ich GROUP BY verwende, überspringe ich keine Zeilen? Werden sie alle in der SUM() enthalten sein? Über deinen Punkt bezüglich der Normalisierung ... Du hast recht, aber ich benutze ein Beispiel hier, um es einfach zu machen :-) – Glooh
@glooh das ist der Sinn von GROUP BY. Es summiert alle Zeilen für jeden Benutzer. – liquorvicar