0
私は2つのテーブルを持っています:都市のリストと各都市のカテゴリのリスト。結合クエリの結果を制限する
Table tv_village
id | name
--------------
1 | London
2 | Paris
Table tv_village_category
village_id | category | total
-----------------------------
1 | event | 10
1 | realestate | 15
1 | job | 8
1 | place | 20
2 | event | 42
2 | realestate | 66
2 | job | 83
2 | place | 55
私の質問
私は、各都市のトップ3カテゴリー(合計でソート)を取得する必要があります。私はこのクエリをしようとすると、私は
を試してみました何
は、それがフィールドv.id
がサブクエリで不明であることを私に伝えます。
SELECT *
FROM tv_village v
INNER JOIN (
SELECT *
FROM tv_village_category vc2
WHERE vc2.village_id = v.id
AND vc2.total > 0
ORDER BY vc2.total DESC
LIMIT 3
) vc
ORDER BY v.id, vc.total DESC
私は性能がを重要、と私のテーブルは(36K都市と1Mカテゴリ)ビット巨大であることを追加する必要があります。
よろしく、
これはMySql:Oracleには横結合があり、SQL ServerにはAPPLYがありますが、DBでは簡単に使えるものの1つです。他のすべてがそれらのいずれかをサポートします。 OracleがMySqlに追加する可能性の低い欠点の機能のリストを追加してください。それで、CTE、Windowing関数、索引付けされたビューなど...競合する必要はありません。 –