
mysql5.1.33を使用しています。
テーブル「tbl1」
id int(11)
テーブル「tbl2」
id int(11)
num1 int(11)
テーブル「tbl1_tbl2」
id int(11)
tbl1_id int(11) tbl1の外部キー
tbl2_id int(11) tbl2の外部キー
テーブル「tbl1」
+------+
| id |
+------+
| 1 |
+------+
| 2 |
+------+
| 3 |
+------+
| 4 |
+------+
テーブル「tbl2」
+------+------+
| id | num |
+------+------+
| 1 | 5 |
+------+------+
| 2 | 10 |
+------+------+
| 3 | 50 |
+------+------+
| 4 | 100 |
+------+------+
テーブル「tbl1_tbl2」
+------+-------+-------+
| id | tbl1_id | tbl2_id |
+------+-------+-------+
| 1 | 1 | 2 |
+------+-------+------+
| 2 | 1 | 3 |
+------+-------+------+
| 3 | 2 | 1 |
+------+-------+------+
| 4 | 4 | 4 |
+------+-------+------+
というテーブル構成で、tbl1の所有するtbl2のnum1の平均値によって降順にソートしたいのですが
どのようなSQL文になるのでしょうか?
例えばこの場合では、
tbl1のid「1」は、(tbl1_tbl2のid1「1」のtbl2_idのnum(10)+ tbl1_tbl2のid1「2」のtbl2_idのnum(50))÷2=30
tbl1のid「2」は、(tbl1_tbl2のid1「3」のtbl2_idのnum(5))÷1=5
tbl1のid「3」は、tbl1_tbl2にないので=0
tbl1のid「4」は、(tbl1_tbl2のid1「4」のtbl2_idのnum(100))÷1=100
なので
テーブル「tbl1」は
+------+
| id |
+------+
| 4 |
+------+
| 1 |
+------+
| 2 |
+------+
| 3 |
+------+
に並べ変えられた結果が得たいです。
No.1ベストアンサー
- 回答日時:
こんな感じでは?
SELECT id
FROM tbl1
LEFT JOIN (
select tbl1_id,avg(tbl2.num) as average
FROM tbl1_tbl2
INNER JOIN tbl2 ON tbl1_tbl2.tbl2_id=tbl2.id
GROUP BY tbl1_id
) AS SUB ON tbl1.id=SUB.tbl1_id
ORDER BY average DESC
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL MYSQL エラー 2 2022/10/18 11:37
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブル作成について質問があ...
-
SQLiteでご教示願います。
-
参照先に値が無い場合空欄にす...
-
この場合の賢いSQL文は?
-
PHP+MySQLで文が正しいのに実行...
-
PHP/MySQL INSERT文について。
-
mySQLのカラムの並び順によるデ...
-
SELECT クエリーの OR の使い方...
-
DDLのインポート方法
-
UPDATE文のエラー直せますでし...
-
特定の範囲のデータを削除するには
-
テーブルが5つの時の結合の仕...
-
エクセルで最後の文字だけ置き...
-
mysqlのインデックスについて質...
-
2つのテーブルを連結させる方法
-
2つの関連するテーブルの並び替え
-
レコードAとBが等しい場合にupd...
-
SQL文を教えてください
-
複数のテーブルからのデータ抽出
-
カラムを好きな順で並び替え(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
select文のwhere句に配列を入れ...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLにて特定の文字を除いた検索...
-
【Transact-sql】 execの結果を...
-
マイクラPC版のコマンドで効率...
-
SQL Left Join で重複を排除す...
-
sqlで、600行あるテーブルを100...
-
複数テーブルのGROUP BY の使い...
-
WordpressのContact form 7でzi...
-
クエリ表示と、ADOで抽出したレ...
-
SQLサーバから、項目の属性(型...
-
selectした大量データをinsert...
-
Access パラメータクエリをcsv...
-
副問合せの書き方について
-
inner joinをすると数がおかし...
-
insertを高速化させたい
-
[MySQL] 3つのテーブルの結合で...
おすすめ情報