簡體   English   中英

連接SQL表和計數

[英]Joining sql tables and count

試圖加入兩個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

您可以使用此查詢

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連接兩個表的結果的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

此查詢將為您提供tableA'Leader'的人數:

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

輸出:

4

如果要計算tableA中有多少個領導者,則不需要tableB,因為您已經有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子句的情況下做到這一點,而在用例時使用case。

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') 但是,您選擇真正做到這一點。

引用tableB的另一個示例:

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

使用下面的查詢,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM