0

私は以下の4つのテーブルテーブル名を持っています:

  1. Name_tbl
  2. Sports_tbl
  3. Arts_tbl
  4. Science_tbl

すべてのテーブルは、テーブル「Name_tbl」の主キーである「name_id」などの一意の ID によって接続されています。ここで、名前 (Name_tbl 内) を照会し、10 件の結果が返されるとします。「Sports_tbl、Arts_tbl、Science_tbl」に保存されている得点の平均に応じて、最も優れた 3 つの結果を 3 つ表示する必要があります。では、Mysql を使用した最適なソリューションは何でしょうか。最初のインスタンスで返される結果は、最大 100 以上になる可能性があります。

ありがとう、どんな助けでも本当に感謝します。

4

1 に答える 1

0

これを試してください(数値が各テーブルのスコア列に格納されていると仮定します):

SELECT name_tbl.*, ( (arts_tbl.score+science_tbl.score+sports_tbl.score)/3 ) as avg_score
FROM name_tbl 
LEFT JOIN arts_tbl ON name_tbl.name_id = arts_tbl.name_id 
LEFT JOIN sports_tbl ON name_tbl.name_id = sports_tbl.name_id 
LEFT JOIN science_tbl ON name_tbl.name_id = science_tbl.name_id 
ORDER BY avg_score DESC
LIMIT 3
于 2012-05-28T09:29:32.767 に答える