用户可以拥有无限数量的案例,案例可以包含零个或多个标签。如何选择不标记的所有指定用户的案例?我正在使用MySQL。
cases:
id INT
owner_id INT
title TEXT
tags:
id INT
owner_id INT
name TEXT
case_tag (the pivot table):
id INT
case_id INT
tag_id INT
users:
id INT
username VARCHAR
答案 0 :(得分:1)
SELECT a.*, b.*
FROM users a
INNER JOIN cases b
ON a.id = c.owner_id
LEFT JOIN case_tag c
ON b.id = c.case_id
WHERE c.case_id IS NULL
查询的作用是基本上选择表case_tag
上没有匹配记录的所有用户的所有情况。
要进一步了解联接,请访问以下链接:
使用LEFT JOIN
的替代方法是NOT EXISTS
,
SELECT a.*, b.*
FROM users a
INNER JOIN cases b
ON a.id = c.owner_id
WHERE NOT EXISTS
(
SELECT NULL
FROM case_tag c
WHERE b.id = c.case_id
)
答案 1 :(得分:0)
尝试
SELECT u.*, c.*
FROM users u JOIN cases c ON u.id=c.owner_id LEFT JOIN case_tags ct ON c.id=ct.case_id
WHERE ct.id IS NULL