2016-11-13 28 views
-1

現在、データベースに2つのテーブルがあります。 1つはApplicants、もう1つはProgrammeDetailです。 ProgrammeDetailでは、私はminimum required applicantをキャプチャします。したがって、プログラムにApplicantにサインアップすると、ProgrammeIDに関連付けられます。SQL文WHERE句

しかし、INNERJOINWHERE節を使用してSQL文を実行すると、エラーが発生していました。サンプルデータと

programmeDetailテーブル:表のサンプルデータと

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

申請者:

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

所望の出力:

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

のみ2応募FOがありますのでr P01、最低要件は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ではクエリは実行されません。私はうまくいくかもしれないアップデートを作った。 –