[英]MySQL: Selecting data from multiple table where there is more than one 'many to many' relationship tables
有五個表如下
請參考這個 db-fiddle https://www.db-fiddle.com/f/c7mYgFSQUFhCbUoEvpAzpM/0
圖書
作者
類別
(其中表Authors和Category通過多對多關系連接到Books )
書作者
圖書分類
對於給定的 book_id,我想查詢並獲取 book_name、author_name、cat_name。
我怎樣才能在mysql中實現這一點?
您可以使用以下查詢
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
你可能想要:
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;
這是一個 db<>fiddle。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.