Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在查询中计数两次,一次使用限制_Php_Mysql_Count - Fatal编程技术网

Php 在查询中计数两次,一次使用限制

Php 在查询中计数两次,一次使用限制,php,mysql,count,Php,Mysql,Count,鉴于下表: Table1 [class] [child] math boy1 math boy2 math boy3 art boy1 Table2 [child] [glasses] boy1 yes boy2 yes boy3 no 如果我想查询每个类的子类数量,我会这样做: SELECT class, COUNT(child) FROM Table1 GROUP BY class SE

鉴于下表:

Table1
[class]   [child]
 math      boy1
 math      boy2
 math      boy3
 art       boy1

Table2
[child]   [glasses]
 boy1       yes
 boy2       yes
 boy3       no
如果我想查询每个类的子类数量,我会这样做:

SELECT class, COUNT(child) FROM Table1 GROUP BY class
SELECT Table1.class, COUNT(table1.child) FROM Table1
LEFT JOIN Table2 ON Table1.child=Table2.child
WHERE Table2.glasses='yes' GROUP BY Table1.class
如果我想查询每个班级戴眼镜的儿童人数,我会这样做:

SELECT class, COUNT(child) FROM Table1 GROUP BY class
SELECT Table1.class, COUNT(table1.child) FROM Table1
LEFT JOIN Table2 ON Table1.child=Table2.child
WHERE Table2.glasses='yes' GROUP BY Table1.class
但我真正想做的是:

SELECT class, COUNT(child), COUNT(child wearing glasses)
坦率地说,我不知道如何在一个问题上做到这一点


帮助?

您可以尝试以下方法(不检查语法):


这是一个有点黑的问题,您可能会发现在两个查询中完成它更容易,但这种技术在紧要关头对我很有效,在MySQL中,您可以这样做:


选择类、计数(子)、和(如果(眼镜=‘是’,1,0)

这不是一个完美的解决方案,它只是一个替代方案

SELECT class AS a, COUNT( child ) AS b
FROM Table1
GROUP BY class
UNION ALL SELECT COUNT( table1.child ) AS a, Table1.class AS b
FROM Table1
LEFT JOIN Table2 ON Table1.child = Table2.child
WHERE Table2.glasses = 'yes'
GROUP BY Table1.class
输出为:

a   b
art     1
math    3
1   art
2   math

在这篇文章中,我们可能会对开发更多的东西有一些想法。

也许这篇文章已经5年了,但我也有一个解决方案

使用1和0这样的数字表示是/否和真/假对您来说更容易

解决方案是(如果将“是”和“否”更改为1和0):


必须检查语法,但我对我的表有一个类似的查询,它可以工作。

尝试嵌套选择如何?我不知道如何使嵌套选择符合按类分组的要求。请随意发布解决方案!请发布您对该结果的正确查询。。请参阅Dan Head的答案-这就是我需要的按顺序排序的结果发帖时,丹·海德稍早做出了同样的回应,但对你们两人来说都是+1