2017-09-23 7 views
0

私は、単純なことを行うと失敗しようとしています...(除く)別の表の基準に基づいて一つのテーブル内のエントリをカウントする方法別のテーブルのエントリと比較して、いくつかの値に基づいてテーブルを作成し、この比較に基づいて最初のテーブルの合計エントリの数を返します。のMySQL - <p></p>は基本的に私は1つに存在するどのように多くのエントリをチェックしたい

SELECT COUNT(*) 
FROM contacts c 
INNER JOIN projects p ON p.ContactId = c.ContactId 
WHERE c.TypeofContactId = '2' 
AND p.CategoryId NOT IN (2,5) 

これはどういう意味ですか?私は2つのテーブルを持って、1つは私が顧客と持っていた連絡先を持ち、もう1つはそれらの連絡先に基づいて作成されたプロジェクトです。

c.TypeofContactIdp.CategoryIdが作成したプロジェクトの種類である

それ(電話、電子メールなど)であった接触のどのようなタイプです。 50種類あります。

プロジェクトはコンタクトIDに基づいて連絡先に「添付」されています。

私は特定のタイプのために行われたすべての連絡先をカウントしたいのですが、プロジェクトのカテゴリが2または5でなかった場合にのみ、(そう何か...)

だから、すべてのプロジェクト(ない2を見つけるカント場合または5タイプ)c.type = 2の場合、0カウントを取得する必要があります。

私はここで間違っていますか?

ありがとうございました。

答えて

3

あなたがこれを行うことができます:

SELECT SUM(CASE WHEN p.CategoryId NOT IN (2,5) THEN 1 ELSE 0 END) AS TotalCount 
FROM contacts c 
INNER JOIN projects p ON p.ContactId = c.ContactId 
WHERE c.TypeofContactId = '2' 

あなたがwhere句でp.CategoryId NOT IN (2,5)を入れるときは、この基準に一致する行のみを取得します。

+0

驚くばかり!それは働いた:) ありがとうバディ! – user1033882

+0

@ user1033882 - いつでもよろしいですか? –

関連する問題

 関連する問題