[英]How do I combine select statements for all values in a many-to-many table
我正在嘗試清理現有產品數據庫。 我有以下表格:
表
<products> id, title
<keywords> id, title
<product_has_keyword> product_id, keyword_id
當我要生成產品列表時,請使用以下代碼:
SELECT * FROM products;
然后針對每個產品:
SELECT k.title FROM keywords k, product_has_keyword phk WHERE k.id = phk.keyword_id AND phk.id = ?
我如何將這段代碼更改為單個SELECT,它可能還返回除“ id,title,keywords”之類的關鍵字(用空格分隔)之外的產品?
如(1,“錘子”,“工具回家的手”),(2,“攪拌器”,“廚房回家”)等...
您可以使用GROUP_CONCAT,但是要注意,它只能分組
SELECT p.id, p.title ,GROUP_CONCAT(k.title SEPARATOR ' ') `keywords`
FROM
products p
LEFT JOIN product_has_keyword phk ON(p.id = phk.product_id)
LEFT JOIN keywords k ON (k.id = phk.keyword_id )
WHERE phk.id = ?
GROUP BY p.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.