MySQL では、場所ごとに最高点のアーティストを取得する必要があります。助けてください。
user_location_tbl (ユーザー ロケーション テーブル)
|--------------------------------------|
| countryLat | countryLong | userid |
|--------------------------------------|
| 31.695766 | 54.624023 | 1 |
| 20.593684 | 78.96288 | 2 |
| 20.593684 | 78.96288 | 3 |
| 20.593684 | 78.96288 | 4 |
| 31.695766 | 54.624023 | 5 |
|--------------------------------------|
fans_table (どのアーティストがどのユーザーをファンとして持っているかを表示するため)
|----------------------|----------
| artist_id | user_id | Points |
|----------------------|----------
| 1 | 1 | 20 |
| 1 | 2 | 30 |
| 2 | 1 | 40 |
| 2 | 3 | 40 |
| 3 | 1 | 60 |
|----------------------|----------
artist_table (アーティストのリスト)
|-------------------|
| artistid | name |
|-------------------|
| 1 | raja |
| 2 | sekar |
| 3 | thomas |
|-------------------|
どのアーティストが最高点を獲得しているかを場所ごとに取得する必要がありますが、1 回のクエリでそれを行うことはできません。sum(points) を入れて、countryLat、countryLong、artistid でグループ化すると、次の結果が得られます...
|---------------------------------|
| 100 | 20.593684 | 78.96288 | 1 |
| 50 | 20.593684 | 78.96288 | 2 |
| 100 | 31.695766 | 54.624023 | 3 |
| 90 | 31.695766 | 54.624023 | 1 |
|---------------------------------|
...しかし、以下の例のように、その場所で最高点を持つアーティストだけが必要です...
|---------------------------------|
| 100 | 20.593684 | 78.96288 | 1 |
| 100 | 31.695766 | 54.624023 | 3 |
|---------------------------------|
SQL
SELECT Sum(c.tot_points),
a.artist_id
FROM `fans_table` AS a
INNER JOIN `user_location_tbl` AS b
ON a.user_id = b.user_id
INNER JOIN artist_table AS c
ON a.artist_id = c.id
GROUP BY b.countrylat,
b.countrylong,
a.artist_id
上記は私のクエリです