-3

我有 3 个 mySQL InnoDB 表:

Books
A_ID smallint(5) 无符号自动递增 Primary Key
Title varchar(60)

作者
B_ID smallint(5) 无符号自动递增主键
名称 varchar(30)

Author_Book 多对多表
A_ID smallint(5) unsigned
B_ID smallint(5) unsigned
PRIMARY KEY (A_ID,B_ID)
FOREIGN KEY(A_ID) REFERENCES Authors(A_ID)
FOREIGN KEY(B_ID) REFERENCES Books(B_ID)

我不明白如何在多对多表中使用 LEFT JOIN:比如说,显示每本书的作者。我尝试了这个似乎合乎逻辑但没有运气的查询:

SELECT Books.Title, Authors.Name 
FROM Books LEFT JOIN ON Books.B_ID = Author_Book.B_ID 
LEFT JOIN ON AuthorBook.A_ID = Authors.A_ID;

我的查询是否存在标点符号/语法错误?
任何帮助将非常感激。

4

2 回答 2

0
SELECT Books.Title, Authors.Name 
FROM Books LEFT JOIN Author_Book ON Books.B_ID = Author_Book.B_ID 
LEFT JOIN Authors ON AuthorBook.A_ID = Authors.A_ID;
于 2013-11-05T08:15:15.167 回答
0

我建议您尝试使用内部联接作为第二个,但这里的问题是您错过了要加入的表:

SELECT Books.Title, Authors.Name FROM Books LEFT JOIN Author_Book ON Books.B_ID = Author_Book.B_ID LEFT JOIN Authors ON AuthorBook.A_ID = Authors.A_ID;

或者,如果您不需要没有书籍的作者,例如:

SELECT Books.Title, Authors.Name FROM Books INNER JOIN Author_Book ON Books.B_ID = Author_Book.B_ID INNER JOIN Authors ON AuthorBook.A_ID = Authors.A_ID;

于 2013-11-05T08:17:52.497 回答