现数据库中有两张表:
order_info-订单信息表
CREATE TABLE `order_info` (
`order_id` varchar(32) NOT NULL COMMENT '订单id',
`user_id` varchar(64) DEFAULT NULL COMMENT '买家id',
`user_phone` varchar(32) DEFAULT NULL COMMENT '下单钉钉绑定的手机号',
`belong_group` char(1) DEFAULT NULL COMMENT '订单所属1:总部 2:子集团',
`type` varchar(1) DEFAULT NULL COMMENT '订单类型1:订餐2:活动',
`child_type` int(11) DEFAULT NULL COMMENT '订单子类型1:午餐2: 晚餐',
`pay_status` char(1) DEFAULT NULL COMMENT '订单支付状态1:未支付2已支付',
`status` char(1) DEFAULT NULL COMMENT '订单状态1:待支付2:待取餐3:已完成4:已取消',
`total_amount` decimal(12,2) DEFAULT NULL COMMENT '总金额',
`pay_time` datetime DEFAULT NULL COMMENT '支付时间',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`take_time` date DEFAULT NULL COMMENT '取餐时间',
`canteen_id` int(11) DEFAULT NULL COMMENT '餐厅id',
`payway_id` char(1) DEFAULT NULL COMMENT '支付方式1支付宝2饭卡',
`meal_code` varchar(32) DEFAULT NULL COMMENT '取餐码',
`qrcode_img_path` varchar(200) DEFAULT NULL COMMENT '取餐二维码',
`user_name` varchar(64) DEFAULT NULL COMMENT '买家名称',
`activity_id` int(11) DEFAULT NULL COMMENT '活动id',
`activity_name` varchar(32) DEFAULT NULL COMMENT '活动名称',
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单信息表 ';
order_detail-订单明细表
CREATE TABLE `order_detail` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`order_id` varchar(32) DEFAULT NULL COMMENT '订单id',
`item_id` int(11) DEFAULT NULL COMMENT '商品id',
`item_name` varchar(32) DEFAULT NULL COMMENT '商品名称',
`price` decimal(12,2) DEFAULT NULL COMMENT '商品单价',
`num` int(11) DEFAULT NULL COMMENT '商品数量',
`amount` decimal(12,2) DEFAULT NULL COMMENT '商品总价',
`parent_id` int(11) DEFAULT NULL COMMENT '上级id 订餐订单为菜单详情id,活动订单为活动详情id',
`item_type` varchar(32) DEFAULT NULL COMMENT '商品类型 1:普通套餐2:特色套餐3:单品',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=236 DEFAULT CHARSET=utf8 COMMENT='订单明细表 ';
现有一个接口需求要求导出EXCEL格式如下:
关于商品信息一对多关系,通过SQL字符串分组拼接解决:
SELECT i.order_id AS orderId, GROUP_CONCAT(d.item_name, '×', d.num, CHAR(10 using utf8)) AS itemInfo, i.create_time AS createTime, i.user_name AS userName, i.user_phone AS userPhone, i.status AS status, i.total_amount AS totalAmount
FROM order_info i
LEFT JOIN order_detail d
ON i.order_id = d.order_id GROUP BY i.order_id ORDER BY i.order_id ASC;
运行结果:
欢迎关注公众号:c_302888524