以下のようにcontents(コンテンツのテーブル)とhistories(閲覧履歴のテーブル)があるとして、results(目的の取得結果)はどのようにすれば得られますか?
▼ contents(コンテンツのテーブル)
content_id | val |
---|---|
1 | val1 |
2 | val2 |
3 | val3 |
4 | val4 |
5 | val5 |
6 | val6 |
▼ histories(閲覧履歴のテーブル)
history_id | user_id | target_content_id | visit_date |
---|---|---|---|
1 | 53 | 6 | 2020-01-05 |
2 | 41 | 3 | 2020-01-04 |
3 | 53 | 2 | 2020-01-03 |
4 | 78 | 8 | 2020-01-02 |
5 | 66 | 4 | 2020-01-01 |
▼results(目的の取得結果)
|content_id|val|visit_date|
|:--|:--|
6|val6|2020-01-05|
2|val2|2020-01-03|
つまり、53さんの閲覧履歴を取得するのが目的です。
書いてみたのが下のSQLですが、そのように取得できませんでして、初心者で申し訳ございませんが、どうやったらいいのか教えて頂けませんでしょうか。
sql
1select c.content_id, c.val, h.visit_date 2from contents c 3join 4 select target_content_id 5 from histories h 6 where h.user_id=53 7 on h.target_content_id=c.ID
joinの中だけ実行すれば下のようになり、これは6と2が取得できるので、問題はjoinにあるのではと思っているのですが、いまいち理解が進まずわからない状況です。
SQL
1 select target_content_id 2 from histories 3 where actor_id=53
回答3件
あなたの回答
tips
プレビュー