我确定我在这里错过了正确的术语,但是对于这个例子,多对多的关系:
用户有很多书。许多用户都拥有一本书。
查看两位用户拥有的所有图书的最佳方法是什么?
现在我正在使用它:
SELECT * FROM books
WHERE book_id IN
(SELECT book_id FROM user_has_book WHERE user_id = 'joe' AND book_id IN
(SELECT book_id FROM user_has_book WHERE user_id = 'frank'))
我知道这不是最好的方法 - 对吧?我正在使用MySQL
答案 0 :(得分:1)
SELECT b.*
FROM books b
INNER JOIN
(SELECT book_id, COUNT(*) as cnt
FROM user_has_book
WHERE user_id IN ('Frank', 'Joe')
GROUP BY book_id
HAVING cnt=2)x ON (x.book_id = b.book_id)