读书人

关于mySql查询的有关问题 高分

发布时间: 2012-02-22 19:36:55 作者: rapoo

求助关于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以下就不支持这种方法!

读书人网 >PHP

热点推荐