【问题标题】:mySQL many-to-many LEFT JOIN syntaxmySQL 多对多 LEFT JOIN 语法
【发布时间】:2013-11-05 08:07:23
【问题描述】:

我有 3 个 mySQL InnoDB 表:

书籍
A_ID smallint(5) 无符号自增主键
标题 varchar(60)

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

Author_Book 多对多表
A_ID smallint(5) 无符号
B_ID smallint(5) 无符号
主键 (A_ID,B_ID)
FOREIGN KEY(A_ID) REFERENCES 作者(A_ID)
FOREIGN KEY(B_ID) 参考书籍(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;

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

【问题讨论】:

标签: mysql join


【解决方案1】:
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;

【讨论】:

  • 我的(菜鸟)问题已回答;认为这个话题已经结束了。
【解决方案2】:

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

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2017-04-04
    • 2010-09-27
    • 2010-11-16
    • 2023-04-09
    • 1970-01-01
    • 2017-06-18
    相关资源
    最近更新 更多