MySQL:使用逗号分隔值选择多个记录

时间:2014-09-18 02:06:38

标签: mysql sql

我有三个表:store_productsstore_ordersstore_orders_productsstore_products包含所有产品,store_orders包含订单信息,store_orders_products包含该订单中的每个产品。

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

这个查询可以获得我想要的一切,除了它只返回一个产品名称。我希望每个产品都以逗号分隔的字符串。我已经尝试了子查询,COALESCECONCATIN()等,但我没有得到我想要的结果。

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

1 个答案:

答案 0 :(得分:1)

我想你想要group_concat()

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;

我不明白为什么你要加入store_products两次,但我猜你知道你在做什么加入。