回答編集履歴

2

訂正

2020/09/27 08:11

投稿

sazi
sazi

スコア25329

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  on 配送テーブル.配送ID = 配送詳細テーブル.配送ID
30
30
 
31
- where 配送テーブル.商品ID = 配送詳細.商品ID
31
+ where 配送テーブル.商品ID = 配送.商品ID
32
32
 
33
33
  and 配送詳細テーブル.更新日 > 配送詳細.更新日
34
34
 

1

追記

2020/09/27 08:11

投稿

sazi
sazi

スコア25329

test CHANGED
@@ -1,3 +1,47 @@
1
1
  `limit 1`を指定しているので、商品IDに関わらず、1件しか取得できていません。
2
2
 
3
3
  商品ID毎に1件になるようにする必要があります。
4
+
5
+
6
+
7
+ 以下は相関副問合せによるnot exists判定で、商品ID毎に配送詳細テーブルの更新日が最大のものに限定しています。
8
+
9
+ ```SQL
10
+
11
+ with 配送情報 as (
12
+
13
+ Select 配送.商品ID, 配送詳細.配送サービス名, 配送詳細.更新日
14
+
15
+ from 配送テーブル as 配送
16
+
17
+ left join 配送詳細テーブル as 配送詳細
18
+
19
+ on 配送.配送ID = 配送詳細.配送ID
20
+
21
+ where not exists(
22
+
23
+ select 1
24
+
25
+ from 配送テーブル
26
+
27
+ left join 配送詳細テーブル
28
+
29
+ on 配送テーブル.配送ID = 配送詳細テーブル.配送ID
30
+
31
+ where 配送テーブル.商品ID = 配送詳細.商品ID
32
+
33
+ and 配送詳細テーブル.更新日 > 配送詳細.更新日
34
+
35
+ )
36
+
37
+ )
38
+
39
+ SELECT メイン.商品ID, 配送情報.配送サービス名
40
+
41
+ from メインテーブル as メイン
42
+
43
+ LEFT JOIN 配送情報
44
+
45
+ on 配送情報.商品ID = メイン.商品ID
46
+
47
+ ```