2015-08-03 1 views
2

У меня есть таблицы:ВЫБРАТЬ многие ко многим таблиц в одном запросе

**RUBRIC:** `RubricID, RubricName` 

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

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

**BOOKAUTOR:** `BookID, AutorID` 

**BOOKRUBRIC:** `BookID, RubricID` 

Я хочу написать в одном запросе SELECT, чтобы вернуть BookName, ПгвЬЫат, LastName, RubricName.

У меня есть отдельный запрос, но я не знаю, как это записать в одном выборе. Это то, что я получил:

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

Смежные вопросы