连接sql表和计数

uklbhaso  于 2021-06-18  发布在  Mysql
关注(0)|答案(4)|浏览(324)

尝试连接两个sql表以便我可以计数。例子:

id | n_name | n_group    tableA
--------------------
1    Peter    S1
2    Paul     S2
3    James    A1
4    Arty     S2
5    Amy      S2

id | g_name | g_group    tableB
--------------------
1    S1       Leader
1    S2       Leader
2    A1       User

我想数一数表A中有多少领导人,以表B为参考?
到目前为止,我所知道的是,我不知道如何加入表格

Try
            connect()
            cmd.CommandText = "SELECT count(n_group) FROM [tableA].........

            Dim lrd As SqlDataReader = cmd.ExecuteReader()
            lrd.Read()
            label1.text = lrd("n_group").ToString()
            lrd.Close()
            disconnect()

        Catch ex As System.Exception
            label1.text = "0"
        End Try
k2fxgqgv

k2fxgqgv1#

如果你想计算表A中有多少个领导者,你不需要表B,因为你已经有了id,你知道哪些id是领导者。

SELECT count(n_group) AS CountOfLeaders
FROM [tableA] as a
WHERE a.n_group = 'S1' OR a.n_group = 'S2'

你的表b显示s1和s2 id是领导者。
你甚至可以不用where子句和用例when来代替。

SELECT count(case when a.n_group = 'S1' OR 
                       a.n_group = 'S2' 
             then 1 else NULL end) AS CountOfLeaders
FROM [tableA] as a

有很多方法可以做到这一点。您可以在另一个表上联接并使用 ID = 1 或者在哪里 g_name IN('S1','S2') . 不管你怎么选择,你都能做到。
另一个引用表B的示例:

SELECT count(n_group) AS CountOfLeaders
FROM [tableA] as a
INNER JOIN tableB b ON a.n_group = b.g_name
WHERE b.id = 1
osh3o9ms

osh3o9ms2#

此查询将为您提供 tableA 你是谁 'Leader' :

SELECT COUNT(*)
FROM tableA a
JOIN tableB b ON b.g_name = a.n_group
WHERE b.g_group = 'Leader'

输出:

4
8gsdolmq

8gsdolmq3#

你可以做这个查询

select b.g_group, count(b.g_group) 
from tablea a inner join tableb b on a.n_group = b.g_name 
group by b.g_group

您不需要指定g\u group内容,但是您可以使用它根据连接两个表所获得的结果进行分组(因此,如果您甚至有三个“leader”记录,那么对于任何“user”记录,您的查询仍然有效)
当然,如果您只对“leader”记录感兴趣,您应该添加一个适当的where条件,如

select b.g_group, count(b.g_group) 
from tablea a inner join tableb b on a.n_group = b.g_name 
where b.g_group = 'Leader'  -- >> or use b.id = 1 <<
group by b.g_group
qni6mghb

qni6mghb4#

使用下面的查询,

SELECT COUNT(A.*) FROM tableA A
INNER JOIN tableB B ON A.n_group = B.g_name
WHERE B.g_name IN ('S1', 'S2')

相关问题