繁体   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