MySQL:选择多个具有逗号分隔值的记录

MySQL:选择多个具有逗号分隔值的记录,mysql,sql,Mysql,Sql,我有三个表:store\u products、store\u orders和store\u orders\u productsstore\u products包含所有产品,store\u orders包含订单信息,store\u orders\u products包含该订单中的每个产品 我正在建立一个订单页面,该页面将列出每个订单。它将有下订单的人的用户名、日期、总金额和每个产品的名称 这个查询得到了我想要的一切,只是它只返回一个产品名称。我希望每个产品都用逗号分隔的字符串。我尝试过子查询、CO

我有三个表:
store\u products
store\u orders
store\u orders\u products
store\u products
包含所有产品,
store\u orders
包含订单信息,
store\u orders\u products
包含该订单中的每个产品

我正在建立一个订单页面,该页面将列出每个订单。它将有下订单的人的用户名、日期、总金额和每个产品的名称

这个查询得到了我想要的一切,只是它只返回一个产品名称。我希望每个产品都用逗号分隔的字符串。我尝试过子查询、
COALESCE
CONCAT
IN()
等,但没有得到想要的结果

SELECT 
    o.id AS order_id
    , o.order_total
    , o.created_at
    , u.username
    , u.avatar
    , sp.name 
FROM store_orders o 
JOIN store_orders_contents c ON o.id=c.oid 
JOIN store_products p ON p.id=c.pid
JOIN users u ON u.id=o.consumer_uid
JOIN store_products sp ON sp.id=c.pid
WHERE p.uid=3
GROUP BY order_id

我想您需要
组\u concat()


我不明白你为什么要加入两次
store\u products
,但我想你知道你在做什么。

谢谢,这就成功了。事实上,我今天早些时候尝试了
group\u concat()
,但在重新处理查询之后,我完全忘记了它!
store\u products
上的第二个加入来自我在sequel pro中的游戏。它现在不见了。:)注意:GROUP_CONCAT返回的最大长度受
GROUP_CONCAT_max_len
变量的设置限制(我认为默认值为1024。最好检查返回值的长度,以确定该值是否被截断。
SELECT o.id AS order_id, o.order_total, o.created_at, u.username, u.avatar,
       group_concat(sp.name )
FROM store_orders o JOIN
     store_orders_contents c
     ON o.id = c.oid JOIN
     store_products p
     ON p.id = c.pid JOIN
     users u
     ON u.id = o.consumer_uid JOIN
     store_products sp
     ON sp.id = c.pid
WHERE p.uid = 3
GROUP BY order_id;