質問編集履歴
2
リンクの修正、tableの内容の追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,31 @@
|
|
1
|
-
下のサイトにあるように、異なるテーブル
|
1
|
+
下のサイトにあるように、異なるテーブルの列同士をwhereで比較した場合(6行目 c1.timestamp > c.timestamp)、内部的にはどのような処理が行われるのでしょうか?
|
2
|
-
|
2
|
+
[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)
|
3
|
+
sqlの内容としては、Classificationの行でtimestampがテーブルClosed Casesのtimestamp以前のものをマージするという内容になっています。
|
4
|
+
```table
|
5
|
+
Closed Cases
|
6
|
+
| id | resolution | timestamp |
|
7
|
+
------------------------------------------------
|
8
|
+
| 1 | solved | 2006-10-05 11:55:44.888153 |
|
9
|
+
| 2 | closed | 2007-10-07 12:34:17.033498 |
|
10
|
+
| 3 | trashed | 2008-10-09 08:19:36.983747 |
|
11
|
+
| 4 | solved | 2010-10-13 04:28:14.348753 |
|
3
12
|
|
13
|
+
Classification
|
14
|
+
| id | value | timestamp |
|
15
|
+
-------------------------------------------------
|
16
|
+
| 1 | freshman | 2006-01-01 12:02:44.888153 |
|
17
|
+
| 2 | sophomore | 2007-01-01 12:01:19.984333 |
|
18
|
+
| 3 | junior | 2008-01-01 12:02:28.746149 |
|
19
|
+
|
20
|
+
desired result
|
21
|
+
| id | resolution | timestamp | value |
|
22
|
+
--------------------------------------------------------------
|
23
|
+
| 1 | solved | 2006-10-05 11:55:44.888153 | freshman |
|
24
|
+
| 2 | closed | 2007-10-07 12:34:17.033498 | sophomore |
|
25
|
+
| 3 | trashed | 2008-10-09 08:19:36.983747 | junior |
|
26
|
+
| 4 | solved | 2010-10-13 04:28:14.348753 | junior |
|
27
|
+
```
|
28
|
+
|
4
29
|
```sql
|
5
30
|
SELECT case.id, case.resolution, case.timestamp, class.value
|
6
31
|
FROM closed_cases AS case
|
1
誤字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,5 +14,5 @@
|
|
14
14
|
WHERE case.timestamp BETWEEN $1 AND $2;
|
15
15
|
```
|
16
16
|
|
17
|
-
目的から推測するとc1.timestampの各値について、cのtimestampがc1.timestampより小さい
|
17
|
+
目的から推測するとc1.timestampの各値について、cのtimestampがc1.timestampの一つの値より小さいcの行をまとめて取ってきて、その行たちについてmin(timestamp)を計算しているように思えます。
|
18
18
|
同じテーブルの2つの列を比較する場合は単純にwhereの条件を満たす行を取ってくるだけだと思うのですが、このように異なるテーブル間の列同士の比較は内部的にどのような処理が行われるのか教えていただけると助かります。
|