【发布时间】:2016-02-17 08:30:43
【问题描述】:
我有三个 MySQL 表,成功地完成了一个查询,该查询对支付表进行了一些计算,以根据订单显示。
问题: 需要从下面提到的查询连接条件中的 sku_mapping 表中获取 full_name 列是
concat ('f|',fk_orders.sku) = sku_mapping.prefix_sku
fk_orders
|order_item_id |order_id |Invoice_No |Invoice_No_Amt |Qty |Refund_Qty |Refund_Amount | sku
------------------------------------------------------------------------------------------------------
|1131231 |123 |F08OTTN16-1 |100 |1 | | |A3001
|1113138 |321 |F08OTTN16-2 |200 |2 |1 |200 |B1001
|1231231 |023 |F08OTTN16-3 |100 |1 |1 |100 |C2001
|1133138 |320 |F08OTTN16-4 |200 |2 | | |D8901
|1134231 |103 |F08OTTN16-5 |100 |1 | | |E6210
|1113538 |300 |F08OTTN16-6 |200 |2 | | |F1001
|1003538 |300 |F08OTTN16-7 |200 |2 | | |G9003
fk_payments
|order_item_id |order_id |Invoice_No |Invoice_No_Amt |Settlement_Value
-----------------------------------------------------------------------------------
|OI:1131231 |123 |F08OTTN16-1 |100 |40
|OI:1113138 |321 |F08OTTN16-2 |200 |150
|OI:1231231 |023 |F08OTTN16-3 |100 |-50
|OI:1133138 |320 |F08OTTN16-4 |200 |200
|OI:1134231 |103 |F08OTTN16-5 |100 |40
|OI:1113538 |300 |F08OTTN16-6 |200 |250
|OI:1131231 |123 |F08OTTN16-1 |100 |40
|OI:1133138 |320 |F08OTTN16-4 |200 |100
|OI:1113138 |321 |F08OTTN16-2 |200 |-200
sku_mapping
|prefix_sku |full_name
-------------------
x|A3001 |Apple_Phone
f|B1001 |Belkin
f|C2001 |Cat_Access
f|D8901 |Dlink
f|E6210 |Eltron
f|F1001 |Flag
f|G9003 |gott
f|A3001 |Phone
a|B1001 |Belkin
a|C2001 |Cat_Access
a|D8901 |Dlink
a|E6210 |Eltron
a|F1001 |Flag
a|G9003 |gott
当前结果
|order_item_id |order_id |Invoice_No |Invoice_No_Amt |Qty |Refund_Qty |Refund_Amount |sku |SettledAmount |netAmount
------------------------------------------------------------------------------------------------------------------------------------
|1131231 |123 |F08OTTN16-1 |100 |1 | | |A3001 |80 |20
|1113138 |321 |F08OTTN16-2 |200 |2 |1 |200 |B1001 |150 |50
|1231231 |23 |F08OTTN16-3 |100 |1 |1 |100 |C2001 |50 |50
|1133138 |320 |F08OTTN16-4 |200 |2 | | |D8901 |300 |-100
|1134231 |103 |F08OTTN16-5 |100 |1 | | |E6210 |40 |60
|1113538 |300 |F08OTTN16-6 |200 |2 | | |F1001 |250 |-50
|1003538 |300 |F08OTTN16-7 |200 |2 | | |G9003 |0 |200
预期结果(需要 sku_prefix 表中的全名列)
|order_item_id |order_id |Invoice_No |Invoice_No_Amt |Qty |Refund_Qty |Refund_Amount |sku |SettledAmount |netAmount |full_name
-----------------------------------------------------------------------------------------------------------------------------------------------
|1131231 |123 |F08OTTN16-1 |100 |1 | | |A3001 |80 |20 |Apple_Phone
|1113138 |321 |F08OTTN16-2 |200 |2 |1 |200 |B1001 |150 |50 |Belkin
|1231231 |23 |F08OTTN16-3 |100 |1 |1 |100 |C2001 |50 |50 |Cat_Access
|1133138 |320 |F08OTTN16-4 |200 |2 | | |D8901 |300 |-100 |Dlink
|1134231 |103 |F08OTTN16-5 |100 |1 | | |E6210 |40 |60 |Eltron
|1113538 |300 |F08OTTN16-6 |200 |2 | | |F1001 |250 |-50 |Flag
|1003538 |300 |F08OTTN16-7 |200 |2 | | |G9003 |0 |200 |gott
当前代码
select o.*,
(coalesce(Refund_Amount, 0) + coalesce(sv, 0)) as SettledAmount,
(Invoice_No_Amt - coalesce(Refund_Amount, 0) - coalesce(sv, 0)) as netAmount
from fk_orders o left join
(select invoice_no, sum(Settlement_Value) as sv
from fk_payments
group by invoice_no
) p
on o.invoice_no = p.invoice_no;
【问题讨论】:
-
发布您当前的代码,以便人们可以使用它
-
@Matt 添加了代码。谢谢我错过了
-
您目前如何撤回 sku?代码中没有提到它,或者它在 fk_orders 表中?
-
@Matt 这就是我要做的。我想我需要添加下面的代码,但不知道如何放置它
FROMfk_orders,sku_mapping WHERE concat ('f|',fk_orders.sku)=sku_mapping.prefix_sku -
好的,你应该提到上面的 fk_orders 表示例数据中有一个 fk_orders.sku