私には手に負えないような課題があります。
+------+--------+-----------+-------+
| 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 |
+------+--------+-----------+-------+
ジャンルに関係なく、ユーザーが所有する本の総量を取得する SQL クエリが必要であり、誰が最も多く持っているかでそれらを並べ替えたいと考えています。
この例では、Mary は 20 冊、Pete は 5 冊、John は 7 冊の本を持っているので、望ましい結果は次のような配列になります。
result[0][user] = "Mary";
result[0][total] = 20;
result[1][user] = "John";
result[1][total] = 7;
result[2][user] = "Pete";
result[2][total] = 5;
これを1つのSQLにするにはどうすればよいですか? CONCATまたはTOPなどを使用する必要がありますか? 私はMySQLとPHPを使用しています。