2011-02-02 3 views
0
SELECT v.*, COUNT(a.*) 
FROM vacancies AS v, applications AS a 
WHERE a.vacancy_id = v.id 

基本的に私は空きに対応するアプリケーションの数を数える方法が必要です。このmysqlクエリで何が問題になったのですか

アプリケーションに空席IDがあります。だから私はvacanciesテーブルから空きを取得し、同じvacancy_idを持つアプリケーションの量を出力することを繰り返します。

これは正しい方法ですか?私はCOUNT(a.*)ビットに問題があると言います。

アイデア?

ありがとうございます。 、

SELECT v.*, COUNT(a.candidate_id) 
FROM vacancies AS v, applications AS a 
WHERE a.vacancy_id=v.id 
GROUP BY v.title 

しかし、それは唯一の結果を返しますtheresの唯一のアプリケーション理由:

編集

オクラホマので、私は事によってグループを試みたが、今はこれを持っています。欠員に関連する申請がない場合でも、空室テーブルからすべてを返す方法はありますか?

答えて

1

COUNTはグループ操作です。最後にGROUP BYを使用する必要があります。 使用し

SELECT vを参加左。*、COUNT(a.candidate_id) V LEFT AS欠員FROM

EDITはVでのa.vacancy_id = v.id GROUPなどのアプリケーションを登録しよう。タイトル

+0

ありがとうございます。 :)私は質問を編集しました、私は今問題があるすべての空室を選択することはありませんが、そこに関連付けられているアプリケーションがある。何か案は? –

+0

は左結合を使用します。 – MeelStorm

+0

brilliant :)ありがとう –

0

あなたが集計と名前

1

を混合している場合は、あなたがGROUP BY句を必要とする何かBY GROUPする必要があります。

GROUP BY vacancy.somefield 

のようなものをクエリに追加します。代わりに

WHERE a.vacancy_id = v.id 

を書くのあなたはLEFT JOIN句を使用する必要があり、空席のテーブルのすべてのメンバーを選択するにはCOUNT function reference in MySQL

を参照してください:

LEFT JOIN applications ON a.vacancy_id = v.id 

MySQL JOIN documentationを参照してください。

+0

こんにちは、ありがとう。 :)私は質問を編集しました、私は今問題があるすべての空室を選択することはありませんが、そこに関連付けられているアプリケーションがある。何か案は? –

+0

私はあなたの2番目の質問を反映するために私の答えを編集しました。 –

+0

ありがとうございます:)大変ありがとうございます –

0
SELECT 
    v.id, COUNT(*) 
FROM 
    vacancies AS v, 
    applications AS a 
WHERE 
    a.vacancy_id=v.id 
GROUP BY 
    v.id 
+0

ありがとう:)私は質問を編集しました。問題はありますが、空きがすべて選択されず、関連するアプリケーションがあるだけです。何か案は? –

関連する問題