質問編集履歴

2

リンクの修正、tableの内容の追記

2021/08/31 11:31

投稿

abea
abea

スコア32

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,56 @@
1
- 下のサイトにあるように、異なるテーブル(下場合だとエイリアスが違うけど内容は同じですが)の列同士をwhereで比較した場合(6行目 c1.timestamp > c.timestamp)、内部的にはどのような処理が行われるのでしょうか?
1
+ 下のサイトにあるように、異なるテーブルの列同士をwhereで比較した場合(6行目 c1.timestamp > c.timestamp)、内部的にはどのような処理が行われるのでしょうか?
2
2
 
3
- https://stackoverflow.com/questions/4070476/sql-query-to-join-two-tables-based-off-closest-timestamp
3
+ [stackoverflow.com/questions/4070476/sql-query-to-join-two-tables-based-off-closest-timestamp](http://stackoverflow.com/questions/4070476/sql-query-to-join-two-tables-based-off-closest-timestamp)
4
+
5
+ sqlの内容としては、Classificationの行でtimestampがテーブルClosed Casesのtimestamp以前のものをマージするという内容になっています。
6
+
7
+ ```table
8
+
9
+ Closed Cases
10
+
11
+ | id | resolution | timestamp |
12
+
13
+ ------------------------------------------------
14
+
15
+ | 1 | solved | 2006-10-05 11:55:44.888153 |
16
+
17
+ | 2 | closed | 2007-10-07 12:34:17.033498 |
18
+
19
+ | 3 | trashed | 2008-10-09 08:19:36.983747 |
20
+
21
+ | 4 | solved | 2010-10-13 04:28:14.348753 |
22
+
23
+
24
+
25
+ Classification
26
+
27
+ | id | value | timestamp |
28
+
29
+ -------------------------------------------------
30
+
31
+ | 1 | freshman | 2006-01-01 12:02:44.888153 |
32
+
33
+ | 2 | sophomore | 2007-01-01 12:01:19.984333 |
34
+
35
+ | 3 | junior | 2008-01-01 12:02:28.746149 |
36
+
37
+
38
+
39
+ desired result
40
+
41
+ | id | resolution | timestamp | value |
42
+
43
+ --------------------------------------------------------------
44
+
45
+ | 1 | solved | 2006-10-05 11:55:44.888153 | freshman |
46
+
47
+ | 2 | closed | 2007-10-07 12:34:17.033498 | sophomore |
48
+
49
+ | 3 | trashed | 2008-10-09 08:19:36.983747 | junior |
50
+
51
+ | 4 | solved | 2010-10-13 04:28:14.348753 | junior |
52
+
53
+ ```
4
54
 
5
55
 
6
56
 

1

誤字修正

2021/08/31 11:31

投稿

abea
abea

スコア32

test CHANGED
File without changes
test CHANGED
@@ -30,6 +30,6 @@
30
30
 
31
31
 
32
32
 
33
- 目的から推測するとc1.timestampの各値について、cのtimestampがc1.timestampより小さいテーブル一部を取ってきて、min(timestamp)を計算しているように思えます。
33
+ 目的から推測するとc1.timestampの各値について、cのtimestampがc1.timestampの一つの値より小さいcまとめて取ってきて、その行たちについてmin(timestamp)を計算しているように思えます。
34
34
 
35
35
  同じテーブルの2つの列を比較する場合は単純にwhereの条件を満たす行を取ってくるだけだと思うのですが、このように異なるテーブル間の列同士の比較は内部的にどのような処理が行われるのか教えていただけると助かります。