2017-08-21 62 views
1

我有兩個表。 UniversityUniversityType。結構看起來像這樣。 對於大學涉及多個表的SQL計數

universityId universityName universityTypeId universityTypeName 
     1   xyz    1    UGC 
     2   abc    1    UGC 
     3   lmn    2    NCT 
     4   pqr    3    AICT 

對於UniversityType

universityTypeId universityTypeName 
      1    UGC 
      2    NCT 
      3    AICT 

UniversityType表是fixed.Now我想universityType的計數是UGC = 2,AICT = 1,NCT = 1.Now我我正在寫這樣的東西

SELECT universityId,universityTypeId,universityName FROM 
    University where universityTypeId=:universityTypeId"; 

但我沒有得到正確的結果。任何人都可以告訴我。我是新來的SQL。

+0

你需要使用像[COUNT()](https://www.w3schools.com/sql/聚合函數sql_count_avg_sum.asp) – waka

回答

1
SELECT universityTypeId, COUNT(1) 
FROM University where universityTypeId=:universityTypeId 

OR

SELECT universityTypeId, COUNT(1) 
FROM University 
GROUP BY universityTypeId 

OR

SELECT universityTypeId, (SELECT COUNT(1) 
    FROM University where universityTypeId = UniversityType.universityTypeId) 
    FROM UniversityType 
+0

它是否返回所有universityTypes的計數? –

+0

第一個會給你計算你通過的類型(這是你正在嘗試?)。第二個會給你的類型,確實有一所大學的計數 –

+0

增加了第三個SQL,這將讓你計數所有大學類型 –

1

喜歡這個

SELECT universityId,universityName,count(universityTypeId) as total FROM 
University group by universityId,universityName 

您必須BY子句添加的所有列清單的組中,除非它在聚合函數中使用

0
select universityTypeName, COUNT(University.universityId) FROM UniversityType JOIN University ON UniversityType.universityTypeId = University.universityTypeId GROUP BY UniversityType.universityTypeName 

嘗試此查詢

0

您需要通過UniversityType.universityTypeId聯接表並計算University秒。所以,試試這個:

SELECT t.universityTypeName, count(u.universityId) as total 
FROM University u, UniversityType t 
WHERE u.universityTypeId = t.universityTypeId 
GROUP BY u.universityTypeName; 

它給人的輸出是:

UGC|2 
NCT|1 
AICT|1