Mysql 连接两个表,根据第二个表中的多个条件对第一个表进行计数
如何连接两个表,根据第二个表中的多个条件计算第一个表 这是我的桌子:Mysql 连接两个表,根据第二个表中的多个条件对第一个表进行计数,mysql,sql,Mysql,Sql,如何连接两个表,根据第二个表中的多个条件计算第一个表 这是我的桌子: 类别表 产品标签 我想得到一个类别的清单,以及验证的产品数量,如下所示 +----+--------+-------+----------+ | No |category| entry | verified | +----+--------+-------+----------+ | 1 | food | 1 | 1 | | 2 | drinks | 2 | 0 | +-
+----+--------+-------+----------+
| No |category| entry | verified |
+----+--------+-------+----------+
| 1 | food | 1 | 1 |
| 2 | drinks | 2 | 0 |
+----+--------+-------+----------+
我用php脚本和mysql数据库处理它。我很难查询这些类别的列表
有人能帮我问一下吗?感谢您的帮助您可以使用条件聚合来实现所需的结果:
SELECT c.id AS No,
c.category,
COUNT(CASE WHEN p.entry != '0000-00-00' AND p.verified = '0000-00-00' THEN 1 END) AS entry,
COUNT(CASE WHEN p.verified != '0000-00-00' THEN 1 END) AS verified
FROM category c
LEFT JOIN product p ON p.category = c.id
GROUP BY c.id, c.category
输出:
No category entry verified
1 food 1 1
2 drinks 2 0
在MySQL中,您可以将条件的计数
简化为总和
,因为MySQL在数字上下文中将布尔值视为1或0:
SELECT c.id AS No,
c.category,
SUM(p.entry != '0000-00-00' AND p.verified = '0000-00-00') AS entry,
SUM(p.verified != '0000-00-00') AS verified
FROM category c
LEFT JOIN product p ON p.category = c.id
GROUP BY c.id, c.category
此查询的输出相同 您可以使用条件聚合来实现所需的结果:
SELECT c.id AS No,
c.category,
COUNT(CASE WHEN p.entry != '0000-00-00' AND p.verified = '0000-00-00' THEN 1 END) AS entry,
COUNT(CASE WHEN p.verified != '0000-00-00' THEN 1 END) AS verified
FROM category c
LEFT JOIN product p ON p.category = c.id
GROUP BY c.id, c.category
输出:
No category entry verified
1 food 1 1
2 drinks 2 0
在MySQL中,您可以将条件的计数
简化为总和
,因为MySQL在数字上下文中将布尔值视为1或0:
SELECT c.id AS No,
c.category,
SUM(p.entry != '0000-00-00' AND p.verified = '0000-00-00') AS entry,
SUM(p.verified != '0000-00-00') AS verified
FROM category c
LEFT JOIN product p ON p.category = c.id
GROUP BY c.id, c.category
此查询的输出相同 我尝试了这个脚本,结果是
++------------------+---------+---------+----+----+----否|类别|条目|已验证|+----+----+----+----+----你的数据必须与你在问题中显示的不同。我的演示使用了您在问题中提供的数据,并给出了预期的结果result@priyo提供正确的数据。尼克的解决方案看起来是对的。我错了;我完全是以另一种方式读的。奇怪。也许我需要一些咖啡!我刚喝了一杯。因此,我的超级快速回答!:-PI尝试了这个脚本,结果是++------------------+---------+---------+----+----否|类别|条目|已验证|+----+----+---------+----你的数据必须与你在问题中显示的不同。我的演示使用了您在问题中提供的数据,并给出了预期的结果result@priyo提供正确的数据。尼克的解决方案看起来是对的。我错了;我完全是以另一种方式读的。奇怪。也许我需要一些咖啡!我刚喝了一杯。因此,我的超级快速回答!:-Pthank@sachin kumara liyanage,但是你的剧本的结果是这样的:“食物”3“1”`谢谢你@nich,我复制你的剧本是错误的,你是对的。谢谢你的帮助谢谢@sachin kumara liyanage,但是你的剧本的结果是这样的:`1 |食物`3 | 1 |谢谢你@nich,我复制你的剧本是错误的,你是对的。谢谢你的帮助