求助关于mySql查询的问题 高分
一.数据表的结构:
1.主表invoice:
字段:InvoiceCode InvoiceDate PartnerCode ProgramCode ……
IN2007031001 2007-03-04 ICBC AA ……
IN2007031002 2007-03-05 ICBC BB ……
IN2007031003 2007-03-10 ICBC AA ……
…… …… …… …… ……
2.从表一invoicelist:
字段:InvoiceCode …… ItemBundleCode QtyTxn Price Amount
IN2007031001 …… IB2007020111 10 25.00 250.00
IN2007031001 …… IB2007020112 10 15.00 150.00
IN2007031001 …… IB2007020113 5 20.00 100.00
…… …… …… …… …… ……
IN2007031002 …… IB2007020111 8 5.00 40.00
IN2007031002 …… IB2007020112 7 6.00 42.00
IN2007031002 …… IB2007020113 14 10.00 140.00
…… …… …… …… …… ……
3.从表二invoiceuser:
字段:InvoiceCode …… Descrption QTY UnitPrice Amount
IN2007031001 …… 单价-5 10 -5.00 -50.00
IN2007031001 …… 单价-2 10 2.00 20.00
IN2007031001 …… 场地费500/月 6 500.00 3000.00
…… …… …… …… …… ……
IN2007031003 …… 场地费100/月 5 100.00 500.00
IN2007031003 …… 场地费200/月 7 200.00 1400.00
IN2007031003 …… 其它 14 -10.00 -140.00
…… …… …… …… …… ……
二.查询需求:
1.显示的结果要求
编号 票据单号 日期 客户 总金额 ……
1 IN2007031001 2007-03-04 ICBC 3020.00 ……
2 IN2007031002 2007-03-05 ICBC 222.00 ……
3 IN2007031003 2007-03-10 ICBC 1760.00 ……
…… …… …… …… …… ……
2.要求点击表头排序(主要是总金额);
3.a.总金额=从表一的合计金额 + 从表二的合计金额;
b.一个单据可能只在其中一个从表有数据、也可能在两个从表中有数据。
[解决办法]
你能把SQL的逻辑需求描述得清楚一些嘛?
[解决办法]
SELECT i.InvoiceCode,
IF((sum(l.Amount) IS NULL),0,sum(l.Amount)) + IF((sum(u.Amount) IS NULL),0,sum(u.Amount))
FROM invoice as i
LEFT JOIN invoicelist as l
ON i.InvoiceCode = l.InvoiceCode
LEFT JOIN invoiceuser as u
ON i.InvoiceCode = u.InvoiceCode
GROUP BY i.InvoiceCode;
[解决办法]
如果是MySQL5.0以下就不支持这种方法!