我有3个表格,用于存储有关图书的信息:
books
-----
id
title
authors
-------
id
name
books_to_authors
----------------
book_id
author_id
当显示一本书的信息时,我希望能够选择同一作者的其他任何书籍。
我可以从第一个查询中获得当前的书号,但是由于有多个作者,因此我不知道从哪里开始实现我所需要的书。显然,仅使用它们之一就很简单,所以我真的为此苦苦挣扎。任何帮助将非常感激!
最佳答案
我认为这样做很有意义。只需将?
替换为他们当前正在查看的图书ID,即可为您提供同一作者的所有图书。
SELECT b.*
FROM books b
INNER JOIN books_to_authors b2a ON b2a.book_id = b.id
WHERE b2a.author_id IN (
SELECT author_id FROM books_to_authors WHERE book_id = ?
)
如果要排除他们当前正在查看的书,则可以更改查询,如下所示:
SELECT b.*
FROM books b
INNER JOIN books_to_authors b2a ON b2a.book_id = b.id
WHERE b2a.author_id IN (
SELECT author_id FROM books_to_authors WHERE book_id = ?
)
AND b.id <> ?
关于mysql - 使用联接挣扎于MySQL查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3281248/