MySQL数据库查询多行合并的问题

来源:互联网 发布:站长工具端口 编辑:程序博客网 时间:2024/05/01 08:49

有这样一个场景,用户把多样商品放入了购物车,每一样商品数量也不同,然后去购物车挑选最终合适的商品买单,最终这个订单就包含了多样商品。最近写项目就遇到这样一个需求,根据订单id查询订单详情,详情包括订单号,下单时间,商品名称,商品数量。需要显示在同一条记录上。

这里涉及到三张表关联:订单表(order),主要字段有:id(订单id),ordersn(订单编号),createtime(下单时间);订单商品表(order_goods),主要字段有:orderid(订单id),goodsid(商品id),total(购买数量);还有商品表(goods),主要字段有:id(商品id),title(商品名称);

这里写图片描述

这里写图片描述

这里写图片描述

由于字段太多,我只截了一部分。

在MySQL中有group_concat()这样一个函数,完整的语法是:

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

根据我项目的需求,我要查询订单id为78的订单详情,多个商品用”;”分开,解决方案的SQL语句是:

select FROM_UNIXTIME(o.createtime) '下单时间',o.ordersn '订单号',group_concat(g.title separator ' ; ') '商品名称',group_concat(og.total separator ' ; ') '商品数量' from goods as g,order_goods as og,order as o where og.goodsid = g.id and og.orderid = 78 and o.id = 78;
FROM_UNIXTIME(unix_timestamp,format)是MySQL里的时间函数,unix_timestamp可以是字段名,也可以直接是Unix 时间戳,format主要是将返回值格式化。

查询结果是:

这里写图片描述

0 0
原创粉丝点击