お世話になります。
documentテーブルがメインの文章テーブル、view_continueはブックマークテーブルのようなイメージです。
登録した文章はユーザーごとにお気に入り設定が出来るようになっていて、view_continueにはuser_idも登録されるようになっています。
〇データサンプル
documentテーブル
|id|title|report|update_date|
|:--|:--:|--:|
|1|test|text|2018-11-12|
view_continueテーブル
id | document_id | user_id |
---|---|---|
1 | 1 | 001 |
2 | 1 | 002 |
画面に一覧表示する際にいくつか検索条件があります。
1.documentのレコードで登録された日付が当日中のレコード
or
2.view_continueレコードにログインユーザーのidが存在する場合
この条件でjoinした2つのテーブルで検索するとレコードが重複されるのでgroup byします。
sql
1SELECT `d`.`id`, `d`.`title`, `d`.`report`, `d`.`update_date`, `vc`.`user_id` FROM `document` as `d` left join `view_continue` as `vc` on `d`.`id` = `vc`.`document_id` where `update_date`= '2018-11-12' || `user_id` = '002' GROUP by `d`.`id`;
とした場合にuser_idが002のユーザーがログインして画面を表示させると、
|id|title|report|update_date|user_id|
|:--|:--:|--:|
|1|test|text|2018-11-12|001|
となり、他ユーザーのidが紛れ込んでしまいます。
これを検索したuser_idが入るようになる処理を教えていただきたいです。
documentテーブルのレコードは1万件程度の想定です。
基本的にSQLの構文についての質問ですが、テーブル設計に関してのご指摘でも大丈夫です。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー