mysql - 从报告 mysql 查询中删除重复值

标签 mysql sql

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


Last NameFirst NameMIDate 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 
 Mayweather Bethy 5/5/2013$99.46 $249.70 
 Mayweather Bethy 5/5/2013$97.96 $249.70 
 Mayweather Bethy 5/6/2013$34.73 $249.70 
 Mayweather Bethy 5/6/2013$17.55 $249.70 
 GarciaMichael 5/11/2013$198.92 $0.00 
 GarciaMichael 5/11/2013$29.95 $0.00 
 GarciaMichael 5/11/2013$17.30 $0.00 
 SmithRichard 5/15/2013$35.00 $0.00 
 SmithRichard 5/15/2013$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 
 SmithVanessa 5/23/2013$18.00 $0.00 
 SmithVanessa 5/23/2013$1.36 $0.00 
 HERNANDEZLAURA 5/25/2013$34.47 $0.00 
 MyersJonathan 5/30/2013$35.00 $37.65 
 MyersJonathan 5/30/2013$2.65 $37.65 


It is displaying the total amount paid for every fee charged to a customer. My query is this

$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,但只为该客户留下一行并削减了所有其他费用。我需要显示向客户收取的所有费用,但只有一笔金额作为付款。请帮忙

最佳答案

您在查询中混合了连接样式(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

该查询显然尚未经过测试

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

关于mysql - 从报告 mysql 查询中删除重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17416707/

相关文章:

MySQL 删除 NULL 问题

mysql - Mysql 当有重复时左连接

sql - 我对加入感到困惑

c# - 检查文本框中是否包含值 'abc' 而不是 'abc aze'

python - Django 中数据库的下载链接

MySQL 对两个连接列进行条件排序

mysql - 从电话号码中删除特殊字符并进行比较

mysql - 创建触发器后插入值时出现问题

mysql - 有没有办法在 MySQL 中为每个数据库设置密码?

sql - 使用 SELECT MAX() 和 GROUP BY 时如何包含主键?