有以下五个表格
请参阅此db-fiddle https://www.db-fiddle.com/f/c7mYgFSQUFhCbUoEvpAzpM/0
书籍
作者
类别
(其中表 Authors 和 Category 通过多对多关系连接到 Books )
BookAuthor
BookCategory
对于给定的book_id,我想查询并获取book_name,author_name,cat_name。
如何在mysql中实现呢?
答案 0 :(得分:0)
您可以使用以下查询
SELECT b.book_name, a.author_name, c.cat_name
FROM Books b
JOIN BookAuthor ba ON b.book_id =ba.book_id
JOIN Authors a ON a.author_id = ba.author_id
JOIN BookCategory bc ON bc.book_id =b.book_id
JOIN Categories c ON bc.cat_id = c.cat_name
WHERE b.book_id = 101 -- specify book id
答案 1 :(得分:0)
您可能想要:
SELECT b.title, ba.authors, bc.categories
FROM books b LEFT JOIN
(SELECT ba.book_id, GROUP_CONCAT(a.name) as authors
FROM bookauthor ba JOIN
authors a
ON a.auth_id = ba.auth_id
GROUP BY ba.book_id
) ba
ON b.book_id = ba.book_id LEFT JOIN
(SELECT bc.book_id, GROUP_CONCAT(c.name) as categories
FROM bookcategory bc JOIN
categories c
ON bc.cat_id = c.cat_id
GROUP BY bc.book_id
) bc
ON bc.book_id = b.book_id
WHERE b.book_id = 101 -- specify book id
GROUP BY b.book_id, b.title;
Here是db <>小提琴。