1
私は以下のクエリを持っています。私は何をしたいのですか?これは、別個の顧客のためにどのような順序であるかを識別する列を追加することです。 entity_idはオーダーごとに一意であるため、私がしたいのは、created_atによって注文された各顧客の番号unique_idです。問題は、注文内のすべてのアイテムの行があるため、現在のクエリで間違った番号が付けられていることです。MySQLの行番号が目的の結果を得られない
これはこれはこれは、クエリで希望する結果
Order Date ,OrderID, SKU ,Qty ,Customer Email ,First,last ,seqnum
'2015-04-01 14:48:13','19406','201','2.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','201','2.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','201','2.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','201','2.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','201','2.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','103','1.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','102','1.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','102','1.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','102','1.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','201','1.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','102','1.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','105','1.0000','[email protected]','joe','vers','1'
'2015-04-13 17:45:15','20537','105','1.0000','[email protected]','joe','vers','2'
'2015-04-13 17:45:15','20537','102','1.0000','[email protected]','joe','vers','2'
'2015-04-13 17:45:15','20537','201','1.0000','[email protected]','joe','vers','2'
'2015-04-13 17:45:15','20537','201','1.0000','[email protected]','joe','vers','2'
'2015-04-29 14:42:28','22212','102','1.0000','[email protected]','joe','vers','3'
'2015-05-11 17:11:22','23301','102','1.0000','[email protected]','joe','vers','4'
ある現在の結果
Order Date ,OrderID, SKU ,Qty ,Customer Email ,First,last ,seqnum
'2015-04-01 14:48:13','19406','201','2.0000','[email protected]','joe','vers','1'
'2015-04-01 14:48:13','19406','201','2.0000','[email protected]','joe','vers','2'
'2015-04-01 14:48:13','19406','201','2.0000','[email protected]','joe','vers','3'
'2015-04-01 14:48:13','19406','201','2.0000','[email protected]','joe','vers','4'
'2015-04-01 14:48:13','19406','201','2.0000','[email protected]','joe','vers','5'
'2015-04-01 14:48:13','19406','103','1.0000','[email protected]','joe','vers','6'
'2015-04-01 14:48:13','19406','102','1.0000','[email protected]','joe','vers','7'
'2015-04-01 14:48:13','19406','102','1.0000','[email protected]','joe','vers','8'
'2015-04-01 14:48:13','19406','102','1.0000','[email protected]','joe','vers','9'
'2015-04-01 14:48:13','19406','201','1.0000','[email protected]','joe','vers','10'
'2015-04-01 14:48:13','19406','102','1.0000','[email protected]','joe','vers','11'
'2015-04-01 14:48:13','19406','105','1.0000','[email protected]','joe','vers','12'
'2015-04-13 17:45:15','20537','105','1.0000','[email protected]','joe','vers','13'
'2015-04-13 17:45:15','20537','102','1.0000','[email protected]','joe','vers','14'
'2015-04-13 17:45:15','20537','201','1.0000','[email protected]','joe','vers','15'
'2015-04-13 17:45:15','20537','201','1.0000','[email protected]','joe','vers','16'
'2015-04-29 14:42:28','22212','102','1.0000','[email protected]','joe','vers','17'
'2015-05-11 17:11:22','23301','102','1.0000','[email protected]','joe','vers','18'
です:
select sfo.created_at AS "Order Date", sfo.entity_id AS "Order ID",
left(sfoi.sku,3) AS "SKU", sfoi.qty_ordered,
sfo.customer_email AS "Customer Email",
sfo.customer_firstname AS "Customer Firstname",
sfo.Customer_lastname AS "Customer Lastname",
(@rn := if(@e = sfo.customer_email, @rn + 1,
if(@e := sfo.customer_email, 1, 1)
)
) as seqnum
from sales_flat_order sfo join
sales_flat_order_item sfoi
on sfoi.order_id = sfo.entity_id join
sales_flat_order_address sfoa
on sfoa.entity_id = sfo.billing_address_id cross join
(select @rn := 0, @e := '') params
order by sfo.customer_email, created_at;
ありがとう、これは私がMySqlに慣れていないので、これがどのように動作するか知りたいと思う時間があれば素晴らしいことです。 – llerdal
変数の使用方法を知る必要があります。これは、始めるにはかなり複雑な例です。 –