【備忘録】結合条件なしのJOIN
職場で困ったので、調べたことの棚卸し。
やりたかったこと
売り上げテーブルAの全てのレコードと会計年月テーブルBの最新のレコード1件を結合したかった。
商品 | 売り上げ金額 |
---|---|
冷蔵庫 | 50000円 |
電気ケトル | 10000円 |
掃除機 | 30000円 |
会計年月 |
---|
201707 |
201708 |
201709 |
会計年月 | 商品 | 売り上げ金額 |
---|---|---|
201707 | 冷蔵庫 | 50000円 |
201707 | 電気ケトル | 10000円 |
201707 | 掃除機 | 30000円 |
そのための方法
調べた感じ、Bから副表を作った後でAと結合すれば良いみたい。結合方法は...
- CROSS JOINする
- FROM句の後にテーブルを並列に書く(CROSS JOINになる)
- ON句なしでINNER JOINする
- SELECT句中でサブクエリを使う
他にもあったら教えて下さい...!
1. CROSS JOINする
SELECT A.商品, A.売り上げ金額, B_TMP.会計年月 FROM A CROSS JOIN (SELECT 会計年月 FROM B ORDER BY 会計年月 ASC FETCH FIRST 1 ROWS ONLY) AS B_TMP
2. FROM句の後にテーブルを並列に書く(CROSS JOINになる)
SELECT A.商品, A.売り上げ金額, B_TMP.会計年月 FROM A, (SELECT 会計年月 FROM B ORDER BY 会計年月 ASC FETCH FIRST 1 ROWS ONLY) AS B_TMP
これが調べた中で一番驚きました。
3. ON句なしでINNER JOINする
SELECT A.商品, A.売り上げ金額, B_TMP.会計年月 FROM A INNER JOIN (SELECT 会計年月 FROM B ORDER BY 会計年月 ASC FETCH FIRST 1 ROWS ONLY) AS B_TMP ON 1 = 1
4. SELECT句中でサブクエリを使う
SELECT A.商品, A.売り上げ金額, (SELECT 会計年月 FROM B ORDER BY 会計年月 ASC FETCH FIRST 1 ROWS ONLY) AS 会計年月 FROM A