2016-11-13 161 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上运行。我做了一个可能工作的更新。 –