MYSQL。私のテーブルを紹介しましょう。
users
行のあるテーブルがありますid
。
tasks
行id
と。を含むテーブルがありますtitle
。
行(users.idの場合)と( tasks.idの場合)users_tasks
の両方を接続するテーブルがあります。id
uid
tid
ここで、すべてのタスクのリストに加えて、idを持つユーザーが6
そのタスクに割り当てられている場合の情報(=にエントリがusers_tasks
存在する場合はuid
= 6
)が必要です。
最初は簡単です。すべてのタスクを取得します。SELECT * FROM tasks
しかし、今は何ですか?LEFT JOINを続行しようとしましたusers_tasks
が、結果が奇妙すぎて正しい方向に見えませんでした...条件付き結合のようなものが必要ですか?よくわかりません
私の好ましい結果は次のようになります(4つのタスクがあり、ユーザー6が1と3に割り当てられていると仮定します)。
tasktitle | entry for user 6
-----------------------------
task 1 | 1
task 2 | 0
task 3 | 1
task 4 | 0
墓へのコメントのために編集:
SELECT
*, EXISTS (SELECT 1 FROM users_tasks ut WHERE tasks.id = ut.tid AND ut.uid = 6)
FROM
tasks