我正在使用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
我想我错过了一些非常明显的东西,但我一直在阅读有关连接和修改我的逻辑而且我对它视而不见。感谢任何能帮助我的人......
答案 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