(MySQL) Запрос для нескольких столбцов с многоуровневыми таблицами? - PullRequest
0 голосов
/ 24 ноября 2011

С MySQL, как я могу запросить столбец из таблицы на глубине 3 уровня?

Я имею в виду:
[main table] ---> [child table 1] ---> [child table 2]
> C#1's ID -------- > C#2's ID ------------ > String Column

Например:

[транзакция ]
- id
- bookid *
- дата
- персонал

[ книга ]
- id
- authorid *
- название

[ author ]
- id
- имя

Зная только transaction.id, как я могу запросить результат, включая следующие столбцы?
.. transaction.date, book.title, author.name ..

Ответы [ 3 ]

1 голос
/ 24 ноября 2011
select t.date,b.title,a.name from book b  
innerjoin transaction t on t.bookid = b.id 
innerjoin author a on b.authorid = a.id
0 голосов
/ 24 ноября 2011

Использовать Синтаксис MySQL .

SELECT transaction.date , book.title , author.name 
FROM transaction 
     LEFT OUTER JOIN book ON transaction.bookid=book.id 
     LEFT OUTER JOIN author ON book.authorid=author.id 
WHERE transaction.id={your_transaction_id}

Я использую OUTER JOIN, потому что это возвращает транзакцию, даже если книга или автор были удалены из БД.В этом случае результат будет выглядеть так: '2011-01-12',NULL,NULL

0 голосов
/ 24 ноября 2011
select transaction.date , book.title , author.name
from transaction
     join book on transaction.bookid=book.id
     join author on book.authorid=author.id
where transaction.id=<id>;

Подробнее об объединениях здесь http://dev.mysql.com/doc/refman/5.5/en/join.html

...