select * from `sale_orders` t WHERE `number`=$id AND (1<(select count(*) from `sale_orders` where `recipient-name`=t.`recipient-name`) OR `quantity-purchased`>1) order by `sku`请问怎么在以上查询结果的基础上进行以下汇总?
SELECT * , group_concat('  ' , concat_ws( ' X ', `sku` , `quantity-purchased` ) , if(`quantity-purchased`> 1, '****' , '  ') ),group_concat('  ' , `order_id` , '  ') FROM ( select * from `sale_orders` order by `sku`) T WHERE `shipments` =0 AND `number` =$id GROUP BY `recipient-name` , `ship-address-1` ORDER BY length(group_concat( ' ' , concat_ws( ' X ', `sku` , `quantity-purchased` ) , ' ' )) DESC,`sku`
以下是我自己改的,语句本身没有错,只是查询的结果不是我想要的,结果是所有订单都进行汇总了,我是要对第一个查询结果(筛选过后的结果)的基础上进行汇总
SELECT * , group_concat('  ' , concat_ws( ' X ', `sku` , `quantity-purchased` ) , if(`quantity-purchased`> 1, '****' , '  ') ),group_concat('  ' , `order_id` , '  ') FROM ( select * from `sale_orders` t WHERE `number`=$id AND (1<(select count(*) from `sale_orders` where `recipient-name`=t.`recipient-name`) OR `quantity-purchased`>1) order by `sku`) T WHERE `shipments` =0 AND `number` =$id GROUP BY `recipient-name` , `ship-address-1` ORDER BY length(group_concat( ' ' , concat_ws( ' X ', `sku` , `quantity-purchased` ) , ' ' )) DESC,`sku`
表结构:
number int(11)
order_id varchar(40)
order_item_id bigint(40)
shipments int(11)
payments-date varchar(50)
buyer-email tinytext
buyer-name tinytext
buyer-phone-number varchar(50)
sku varchar(50)
jj_sku varchar(50)
product-name text
quantity-purchased int(11)
recipient-name tinytext
ship-address-1 text
ship-address-2 text
ship-address-3 text
ship-state tinytext
ship-postal-code varchar(50)
ship-country varchar(50)
account varchar(30)
ship-city varchar(30)
cancel_order int(2)
delivery_areas