尝试加入两个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
我想以tableB为参考来计算tableA中有多少个领导者?
到目前为止,我所知道的是行不通的,但是我不知道如何加入表格
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
答案 0 :(得分:2)
您可以使用此查询
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_group内容,但可以将其用于GROUP BY将两个表连接在一起的结果(因此,即使您有三个“ Leader”记录,您的查询对于任何“ User”记录仍然可以正常使用)
当然,如果您只对“领导者”记录感兴趣,则应添加适当的条件,例如
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
答案 1 :(得分:1)
此查询将为您提供int
中tableA
的人数:
'Leader'
输出:
SELECT COUNT(*)
FROM tableA a
JOIN tableB b ON b.g_name = a.n_group
WHERE b.g_group = 'Leader'
答案 2 :(得分:0)
如果要计算tableA中有多少个领导者,则不需要tableB,因为您已经拥有ID,并且知道哪个ID是领导者。
this.selectedValue.installerserviceModel.map(x => x.categoryServiceModel.serviceName);
您的表B显示S1和S2 ID为领导者。
您甚至可以在没有where子句的情况下做到这一点,而在用例时使用case。
SELECT count(n_group) AS CountOfLeaders
FROM [tableA] as a
WHERE a.n_group = 'S1' OR a.n_group = 'S2'
有很多方法可以做到这一点。您可以加入另一个表并使用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
。但是,您选择确实要这样做。
引用tableB的另一个示例:
g_name IN('S1','S2')
答案 3 :(得分:0)
在下面的查询中使用
SELECT COUNT(A.*) FROM tableA A
INNER JOIN tableB B ON A.n_group = B.g_name
WHERE B.g_name IN ('S1', 'S2')