繁体   English   中英

为什么我的查询没有显示错误,但还返回零行?

[英]Why my query shows no errors, but also returns zero rows?

我已经编写了此查询,以获取尽可能多的行,其中包括用户+每个用户创建的电位计数+已转换的所有电位。 它是这样的:

SELECT u.*, p.allPotentials, pc.cPotentials 
   FROM os_user u
JOIN (SELECT FID_author, count(*) allPotentials FROM os_potential) p 
   ON p.FID_author = u.ID 
JOIN (SELECT converted, FID_author, count(*) cPotentials FROM os_potential) pc 
   ON p.FID_author = u.ID AND pc.converted = 1

我正在尝试使用不相关的子查询,因为这个答案向我解释了 ,我可以将查询合并为1。但是我得到0行。

我的表如下所示:

使用者:

+----+------+-------+
| ID | Name | Email |
+----+------+-------+

潜力:

+----+------+-------+------------+-----------+
| ID | Name | Email | FID_author | converted |
+----+------+-------+------------+-----------+

FID_author是外键,即用户ID。

我的查询返回0行,没有显示错误。 我究竟做错了什么?

编辑

到目前为止,我的查询:

SELECT u.*, p.allPotentials, pc.cPotentials 
   FROM os_user u
LEFT JOIN (SELECT FID_author, count(*) allPotentials 
   FROM os_potential GROUP BY FID_author) p 
   ON p.FID_author = u.ID 
LEFT JOIN (SELECT converted, FID_author, count(*) cPotentials 
   FROM os_potential GROUP BY FID_author) pc 
   ON p.FID_author = u.ID 
   AND pc.converted = 1 
GROUP BY u.ID

我得到的结果几乎与预期的一样,但是问题是, cPotentials在每一行中都包含1,这是错误的。 只有1个,那么可能有很多问题。

子查询缺少分组依据,最终使用左联接

SELECT u.*, p.allPotentials, pc.cPotentials 
 FROM os_user u
LEFT JOIN (SELECT FID_author, count(*) allPotentials FROM os_potential 
                  GROUP BY FID_author) p 
 ON p.FID_author = u.ID 
LEFT JOIN (SELECT converted, FID_author, count(*) cPotentials FROM os_potential 
                   GROUP BY converted,FID_author) pc 
 ON pc.FID_author = u.ID AND pc.converted = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM