2016-11-13 264 views
-1

我目前在我的數據庫中有兩個表。一個是Applicants,另一個是ProgrammeDetail。在ProgrammeDetail,我捕獲了minimum required applicant。因此,當Applicant註冊一個計劃時,他們將被綁定到ProgrammeIDSQL語句WHERE子句

但是,當我做我的SQL語句時,使用INNERJOINWHERE子句,我不斷收到錯誤。

programmeDetail表的示例數據:

------------------------------------------- 
| programmeID | programmeRequirement | 
------------------------------------------- 
| P01   |   20    | 
------------------------------------------- 

申請人與樣本數據表:

----------------------------------- 
| applicantID | programmeID | 
----------------------------------- 
| A001  |  P01  | 
----------------------------------- 
| A002  |  P01  | 
----------------------------------- 

希望的輸出:

------------------------------------------- 
| programmeID | programmeRequirement | 
------------------------------------------- 
| P01   |   20    | 
------------------------------------------- 

因爲只有2申請人FO最低要求是20名申請人。因此P01將被檢索。

這是我已經試過:

SELECT * 
FROM programmeDetail pD 
INNER JOIN applicant appl 
    ON pD.programmeID = appl.programmeID 
WHERE COUNT(appl.applicantID) < pD.programmeRequirement 

錯誤:

is invalid in the HAVING clause because it is not contained in either an aggregate function or the GROUP BY clause.

+0

請顯示a)表格結構,b)樣本數據,和c)您的期望輸出。這個問題目前還不清楚。 –

+0

你不需要在別的地方使用別名嗎? –

+0

也把你得到什麼錯誤。不清楚。 – ScanQR

回答

0

嘗試用下面,我已經與MySQL試圖將其與所需的輸出工作。我只在結果中添加了需要的列。

SELECT pD.programmeID 
     pD.programmeRequirement 
FROM programmeDetail pD 
INNER JOIN applicant appl 
    ON pD.programmeID = appl.programmeID 
GROUP BY pd.programmeID 
HAVING COUNT(*) < 20 
+0

仍然收到相同的錯誤...我曾嘗試過之前.. – Arane

+0

@Arane我已經嘗試在MySQL中,它的工作原理。我更新了查詢,並在結果中包含您需要的列。 – ScanQR

+0

@TechBreak你的查詢遍佈整個地方,MySQL是那裏最不嚴格的數據庫。對於某些情況,該查詢不會在任何其他RDBMS上運行。我做了一個可能工作的更新。 –