簡體   English   中英

如何將多對多表中所有值的選擇語句組合在一起

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM