0

需要运行查询以输出给定期间(即一个月)的报告,并显示向客户收取的所有费用和支付的金额(如果有)。我的问题是显示为该客户在每一行支付的金额。我想显示所有费用和一个付款金额(假设在最后一行)。不要为客户显示重复的支付金额

姓氏名字MIDate of ServiceFeePayment
 BarrazaReyD5/1/2013$160.00 $0.00
 BarrazaReyD5/1/2013$12.10 $0.00
 OteroAliciaM5/3/2013 $84.68 $329.20
 OteroAliciaM5/3/2013 99.46 美元 329.20 美元
 OteroAliciaM5/3/2013 46.59 美元 329.20 美元
 OteroAliciaM5/3/2013 $48.98 $329.20
 OteroAliciaM5/3/2013 $26.35 $329.20
 OteroAliciaM5/3/2013 $23.14 $329.20
 梅威瑟贝西 5/5/2013 99.46 美元 249.70 美元
 梅威瑟贝西 2013 年 5 月 5 日 97.96 美元 249.70 美元
 梅威瑟贝西 2013 年 5 月 6 日 34.73 美元 249.70 美元
 梅威瑟贝西 2013 年 5 月 6 日 17.55 美元 249.70 美元
 加西亚迈克尔 2013 年 5 月 11 日 $198.92 $0.00
 加西亚迈克尔 2013 年 5 月 11 日 29.95 美元 0.00 美元
 加西亚迈克尔 2013 年 5 月 11 日 $17.30 $0.00
 史密斯理查德 2013 年 5 月 15 日 $35.00 $0.00
 史密斯理查德 2013 年 5 月 15 日 2.64 美元 0.00 美元
 BoothKeithR5/23/2013$14.64 $0.00
 BoothKeithR5/23/2013$255.30 $0.00
 BoothKeithR5/23/2013$66.99 $0.00
 史密斯瓦内萨 2013 年 5 月 23 日 18.00 美元 0.00 美元
 史密斯瓦内萨 2013 年 5 月 23 日 1.36 美元 0.00 美元
 埃尔南德斯劳拉 2013 年 5 月 25 日 34.47 美元 0.00 美元
 迈尔斯乔纳森 2013 年 5 月 30 日 35.00 美元 37.65 美元
 迈尔斯乔纳森 2013 年 5 月 30 日 2.65 美元 37.65 美元


它显示为向客户收取的每笔费用支付的总金额。我的查询是这个

$query = "SELECT
 c.lname as lname,
 c.fname as fname,
 c.mname as mname,
 s.date as date,
 b.fee as fee,
 p.amount as payment,
 FROM sell as s,
 customer as c,
 billing b
 LEFT JOIN payments p on p.completion = b.completion AND p.cid=b.cid
 WHERE      
 s.completion = b.completion
 AND b.cid = s.cid
 AND c.pid = s.cid
 AND s.date BETWEEN ? and ?
 ORDER BY s.date";

我试过GROUP BY p.amount了,但只给那个顾客留了一排,并削减了所有其他费用。我需要显示向客户收取的所有费用,但只有一笔金额作为付款。请帮忙

4

2 回答 2

0

您在查询中混合了连接样式(ANSI 连接和逗号连接)。不要那样做。尝试始终使用 ANSI JOIN 表示法。它更具描述性。

话虽这么说,我相信您的查询应该看起来像

SELECT c.lname,
       c.fname,
       c.mname,
       s.date,
       b.fee,
       p.amount payment
  FROM sell s JOIN customer c
    ON s.cid = c.pid JOIN billing b
    ON s.cid = b.cid 
   AND s.completion = b.completion LEFT JOIN payments p 
    ON b.completion = p.completion 
   AND b.cid = p.cid
 WHERE s.date BETWEEN ? AND ?
 ORDER BY s.date

该查询显然没有经过测试

如果这不能解决您的问题,您必须编辑您的问题并发布所有涉及的表(几行)的相关示例数据,以便以相同的表格形式产生所需的输出(您已经发布)。

于 2013-07-02T03:56:29.590 回答
0

要获取给定客户每笔费用的详细信息,@peterm 解决方案应该可以工作。

您仍然会缺少每位客户支付的总金额。为此,您需要进行单独的查询:

SELECT c.cid,
       SUM(p.amount) AS payment_total
  FROM sell s JOIN customer c
  ... all necessary joins here
  GROUP BY c.cid
于 2013-07-02T04:08:53.453 回答