使用左连接我的SQL查询有什么问题?

时间:2010-09-28 15:29:41

标签: mysql join

我正在使用MySQL。我有3个表,我试图在查询中连接,我无法看到我在使用以下查询时出错:

表1:书籍(书籍信息列表) 表2:书架(会员拥有的书籍清单) 表3:book_reviews(书评评论列表)

我希望生成用户在书架中拥有的所有图书的清单,以及他们所做的任何评论。以下查询仅列出了用户已审阅的图书清单;我想要他们所有的书。我认为第二个LEFT OUTER JOIN会这样做 - 将书架标题连接到书评标题,但我没有得到任何没有评论的书(应该有很多)。删除第二个JOIN语句(并将bookshelf放在FROM语句中)允许我获取没有评论的标题列表,但它显示所有用户的所有书评。

SELECT books.title, book_reviews.comments
FROM books
LEFT OUTER JOIN book_reviews ON books.ID = book_reviews.book_id
LEFT OUTER JOIN bookshelf ON book_reviews.user_id = bookshelf.user_id
WHERE bookshelf.book_id = books.ID
AND bookshelf.user_id =1

我想我错过了一些非常明显的东西,但我一直在阅读有关连接和修改我的逻辑而且我对它视而不见。感谢任何能帮助我的人......

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT books.title, book_reviews.comments
FROM bookshelf
LEFT OUTER JOIN books ON books.ID = bookshelf.book_id
LEFT OUTER JOIN book_reviews ON book_reviews.book_id = books.ID  
 AND book_reviews.user_id = bookshelf.user_id

WHERE bookshelf.user_id =1