我有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/

10-11 03:15