teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記

2020/11/17 09:20

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -15,10 +15,11 @@
15
15
  若しくは、1:多で結合し、条件によって絞り込む
16
16
  ```SQL
17
17
  select Date_a,Value_a,Date_b,Value_b
18
- FROM table_a JOIN table_b
18
+ FROM table_a left JOIN table_b
19
19
  ON table_a.Date_a >= table_b.Date_b
20
20
  where table_b.Date_b = (
21
21
  select max(Date_b) from table_b
22
22
  where Date_b <= table_a.Date_a
23
23
  )
24
+ or table_b.Date_b is null
24
25
  ```

2

追記

2020/11/17 09:20

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -4,11 +4,21 @@
4
4
  SELECT Date_a,Value_a,Date_b,Value_b
5
5
  FROM table_a inner join (
6
6
  select table_a.Date_a, MAX(table_b.Date_b) max_Date_b
7
- FROM table_a JOIN table_b
7
+ FROM table_a left join table_b
8
8
  ON table_a.Date_a >= table_b.Date_b
9
9
  group by table_a.Date_a
10
10
  ) map
11
11
  on table_a.Date_a=map.Date_a
12
- inne join table_b
12
+ left join table_b
13
13
  on map.max_Date_b=table_b.Date_b
14
+ ```
15
+ 若しくは、1:多で結合し、条件によって絞り込む
16
+ ```SQL
17
+ select Date_a,Value_a,Date_b,Value_b
18
+ FROM table_a JOIN table_b
19
+ ON table_a.Date_a >= table_b.Date_b
20
+ where table_b.Date_b = (
21
+ select max(Date_b) from table_b
22
+ where Date_b <= table_a.Date_a
23
+ )
14
24
  ```

1

追記

2020/11/17 09:19

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,4 +1,4 @@
1
- table_aとtable_b を1:1で結合するためには、橋渡しする情報を作成する必要があります。
1
+ table_aとtable_b を1:1で結合するためには、直接の結合が出来ない為、橋渡しする情報を作成する必要があります。
2
2
 
3
3
  ```SQL
4
4
  SELECT Date_a,Value_a,Date_b,Value_b