mysql - 应用 Join SQL 查询时出现意外结果

标签 mysql sql

我正在从 4 个不同的表中获取数据:

  1. 潜在客户
  2. payu_transactions
  3. corporate_user_rides
  4. 公司用户

还有一些条件:

  1. 用户乘坐次数应大于 0
  2. 应该有一定数量的注册用户和活跃用户
  3. 会有一段时间

我已经编写了一些 SQL 查询,但没有得到预期的结果 - 问题在于骑行次数和用户数。

例如-

假设公司 x 实际上有 38 次行程和 23 个用户,但它显示了 7866 次行程和 7866 个用户。

另一家公司 y 实际上有 18 次行程和 5 位用户,但它显示的是 90 次行程和 90 名用户。

任何人都可以帮忙吗,我不确定我在这里做什么。

我试过了-

查询

SELECT l.id             AS leadId,
       l.corporate_id   AS CorporateID,
       "P-1"            AS priority,
       l.source,
       l.user_name      AS FirstName,
       l.user_name      AS LastName,
       l.corporate_name AS corpName,
       l.user_mail_id   AS email,
       l.phone_number   AS phone,
       l.created_At     AS leadCreation,
       l.comments,
       Count(CU.id)     AS users,
       Count(CUR.id)    AS rides,
       PUT.amount       AS payment
FROM   leads l
       LEFT JOIN payu_transactions PUT
              ON l.user_mail_id = PUT.email
       LEFT JOIN corporate_user_rides CUR
              ON l.corporate_id = CUR.corporate_id
       LEFT JOIN corporate_users CU
              ON l.corporate_id = CU.corporate_id
WHERE  l.created_at BETWEEN '2015-03-16 12:00:00' AND '2016-03-17 12:00:00'
GROUP  BY l.user_mail_id
HAVING Count(CUR.id) > 0
       AND Count(CU.id) > 0
       AND Count(CASE
                   WHEN CU.status IN ( 'active' ) THEN 1
                 END) > 0;

帮助将不胜感激。

最佳答案

使用Count(不同的列.名称)而不是Count(列.名称)

关于mysql - 应用 Join SQL 查询时出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36237691/

相关文章:

sql - 一个简单的 - JPA @OneToMany 正在为不存在的表生成 SQL

mysql - 如何在 SQL 中正确使用临时表

mysql - SQL 语句仅显示来自两个不同表的重复邮政编码

sql - 如何检查 SQL Server 中的数据是否有回车符和换行符?

mysql - STR_TO_DATE 返回不正确的小时值

mysql - 计算产品的总值(value)

sql - 我怎样才能只得到一个数字的第一位小数而不四舍五入

php - 如何获取组之间的第一条和最后一条记录?

Mysql full outer join 3 tables with group by and count

Mysql match...against vs. simple like "%term%"