来自一个表的SQL COUNT,其中来自另一个表的条件为真

时间:2013-05-19 00:38:04

标签: php mysql sql

好的,我们假设我有两个表,“TableA”和“TableB”。在表A中,我有一列“C”,在表B中,我有一列“D”和一列“E”。

TableA包含许多可以在C列中包含相同值的行.TableB包含许多行,但D列必须是唯一的(它是自动增量数)。 TableB的列E也可以在不同的行中包含相同的值。同样,C列和D列将包含相同的数字。

示例表

TableA

ID     C
----------
1      1
2      1
3      2

TableB

D    E
----------
1    1
2    0
3    0

现在,我想要做的是计算C列中TableA中的所有行,我已经想出了如何做。但是,我还希望它只给我一个C的计数,其中D中的等价值的E也是“1”。

所以,我试过这个,但它失败了,我想不出我做错了什么或如何解决它。谷歌搜索COUNT只能得到一个处理一个表的结果。

在我的例子中,我希望它为COUNT C,其中IDB在TableB列D中匹配,其中E = 1(所以,其中TableB列D = 1),并将其作为计数返回,所以我希望它回到我身边(或其他事情):

c COUNT(*)降序 1 2

SELECT TableA.C, COUNT(*) FROM TableA, TableB WHERE TableB.E = 1 GROUP BY TableA.C ORDER BY COUNT(*) DESC

如果这有任何意义......

1 个答案:

答案 0 :(得分:1)

您没有加入列

上的两个表格
SELECT a.C, COUNT(*) FROM TableA a JOIN TableB b ON (C = D)
WHERE E GROUP BY a.C
ORDER BY COUNT(*) DESC