-3

3 つの mySQL InnoDB テーブルがあります。

Books
A_ID smallint(5) unsigned 自動インクリメント 主キー
タイトル varchar(60)

作成者
B_ID smallint(5) unsigned 自動インクリメント 主キー
名前 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

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;

于 2013-11-05T08:17:52.497 に答える