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

質問編集履歴

2

typo

2018/01/22 13:54

投稿

yuba
yuba

スコア5570

title CHANGED
File without changes
body CHANGED
@@ -40,7 +40,7 @@
40
40
  ON (f.follower_user_id = u.user_id AND current_time < f.deleted_at)
41
41
  WHERE f.followee_user_id = ?
42
42
  ```
43
- B. フォロー関係の生存期間をONで判定
43
+ B. フォロー関係の生存期間をWHEREで判定
44
44
  ```sql
45
45
  SELECT u.user_id, u.nickname, u.face_image
46
46
  FROM following f

1

具体例の追加

2018/01/22 13:54

投稿

yuba
yuba

スコア5570

title CHANGED
File without changes
body CHANGED
@@ -13,4 +13,40 @@
13
13
  - 日時条件はキーの関係の存在に関わることであり、ON句の責任範囲だ
14
14
  - 結合ルールの存在が一行でわかることは読み手にスキーマ理解のヒントを与える良い書き方
15
15
 
16
- 自分で思いつくメリットデメリットは以上のような感じですが、ほかに考慮点があったら教えてください。
16
+ 自分で思いつくメリットデメリットは以上のような感じですが、ほかに考慮点があったら教えてください。
17
+
18
+ 具体例の追記
19
+ ---
20
+ usersテーブル
21
+ |user_id|nickname|face_image|
22
+ |--|--|--|
23
+ |1|Alice|(BLOB)|
24
+ |2|Bob|(BLOB)|
25
+ |3|Charley|(BLOB)|
26
+
27
+ followingテーブル
28
+ |follower_user_id|followee_user_id|created_at|deleted_at|
29
+ |--|--|--|--|
30
+ |1|2|2015-01-01|9999-12-31|
31
+ |2|3|2015-01-01|2016-12-31|
32
+
33
+ このとき、あるユーザーのフォロワー一覧を表示しようとしたら
34
+
35
+ A. フォロー関係の生存期間をONで判定
36
+ ```sql
37
+ SELECT u.user_id, u.nickname, u.face_image
38
+ FROM following f
39
+ JOIN users u
40
+ ON (f.follower_user_id = u.user_id AND current_time < f.deleted_at)
41
+ WHERE f.followee_user_id = ?
42
+ ```
43
+ B. フォロー関係の生存期間をONで判定
44
+ ```sql
45
+ SELECT u.user_id, u.nickname, u.face_image
46
+ FROM following f
47
+ JOIN users u
48
+ ON (f.follower_user_id = u.user_id)
49
+ WHERE f.followee_user_id = ? AND current_time < f.deleted_at
50
+ ```
51
+
52
+ どちらの記法を選びますか、その根拠はどういったものが考えられますか、という質問になります。