我有一個SQL查詢:如何編寫一個SQL查詢,它將返回一個項目的所有類別?
SELECT b . * , CONCAT(GROUP_CONCAT(c.name)) categories, CONCAT(GROUP_CONCAT(c.id)) cids
FROM books b
JOIN categories_of_books cb ON b.id = cb.book_id
JOIN categories c ON c.id = cb.category_id
GROUP BY b.id
,並返回給我類別別名的所有書籍類別和的CID所有類別的ID。
當我加入WHERE子句是這樣的:
WHERE c.id = 10
在類別我心底只有一個類別,它是顯而易見的。但我怎麼能寫SQL查詢將返回我的所有書籍類別類別,有限制條件別名:
WHERE c.id = 10
[編輯1]
只有變種:
SELECT b . * , GROUP_CONCAT(c.name) categories, GROUP_CONCAT(CAST(c.id AS CHAR)) cid
FROM books b
JOIN categories_of_books cb ON b.id = cb.book_id
JOIN categories c ON c.id = cb.category_id
WHERE b.id in (SELECT categories_of_books.book_id FROM categories_of_books join categories on categories_of_books.category_id = categories.id WHERE categories.id = 10)
GROUP BY b.id
你知道其他更好的變種嗎?
請將上下文添加到您的問題的標題。 「可能嗎?」意味着什麼。 – Armbrat 2010-08-24 21:10:15
好吧,我添加了上下文。 – 2010-08-24 21:12:59
我想你可能會試圖在單個查詢中做太多事情。關注你的努力,編寫一個查詢,只是選擇所有類別WHERE book_id = 10。 – 2010-08-24 21:20:57