2015-08-03 87 views
2

我有表:选择多对多表在一个查询

**RUBRIC:** `RubricID, RubricName` 

**AUTOR:** `AutorID, FirstName, LastName` 

**BOOK:** `BookID, BookName, book_photo` 

**BOOKAUTOR:** `BookID, AutorID` 

**BOOKRUBRIC:** `BookID, RubricID` 

我想在返回BOOKNAME,名字,姓氏,RubricName一个SELECT查询语句来写。

我有两个单独的查询,但我不知道如何写在一个选择。 这是我的了:

SELECT book.BookName, autor.FirstName, autor.LastName FROM bookautor JOIN book ON book.BookID=bookautor.BookID JOIN autor on autor.AutorID=bookautor.AutorID; 

SELECT rubric.RubricName FROM bookrubric JOIN rubric ON rubric.RubricID=bookrubric.RubricID; 

它的工作不错,但如何在一个写选择?

我尝试这一点,但它不工作:

SELECT book.BookName, autor.FirstName, autor.LastName, rubric.RubricName FROM bookautor,bookrubric JOIN book ON book.BookID=bookautor.BookID JOIN autor on autor.AutorID=bookautor.AutorID LEFT JOIN rubric ON rubric.RubricID=bookrubric.RubricID; 

它会返回错误:

ERROR 1054 (42S22): Unknown column 'bookautor.BookID' in 'on clause' 

回答

0

尝试此查询

SELECT book.BookName, autor.FirstName, autor.LastName, rubric.RubricName 
FROM bookautor 
JOIN book ON book.BookID=bookautor.BookID 
JOIN autor on autor.AutorID=bookautor.AutorID 
left join bookrubric on book.BookID=bookrubric.BookID 
LEFT JOIN rubric ON rubric.RubricID=bookrubric.RubricID; 
+0

它的作品,谢谢你,但你可以请如果你能解释为什么'从bookautor'和为什么LEFT JOIN? – Nevada