はあなたの論理和条件の周りにブラケットを必要とする(と表記をJOINを使用する必要があり):
SELECT DISTINCT
a.AssignedEmp,
COUNT(a.TipoStatus) AS 'Service Request Count'
FROM Service AS a
JOIN employee AS b ON a.AssignedEmp = b.UserName
WHERE b.Classification_ClassificationID = 2
AND (a.TipoStatus = 'Open'
OR a.TipoStatus = 'Pending'
OR a.TipoStatus = 'Hold'
OR a.TipoStatus = 'Warranty')
GROUP BY a.AssignedEmp
LIMIT 0, 30
をそれとも、「閉じられていない」という点で直接条件を記述することができます。
SELECT DISTINCT
a.AssignedEmp,
COUNT(a.TipoStatus) AS 'Service Request Count'
FROM Service AS a
JOIN employee AS b ON a.AssignedEmp = b.UserName
WHERE b.Classification_ClassificationID = 2
AND a.TipoStatus != 'Closed'
GROUP BY a.AssignedEmp
LIMIT 0, 30
WHERE句は、もともと書かれているとおり、
WHERE (b.Classification_ClassificationID = 2 AND a.TipoStatus = 'Open')
OR a.TipoStatus = 'Pending'
OR a.TipoStatus = 'Hold'
OR (a.TipoStatus = 'Warranty' AND a.AssignedEmp = b.UserName)
と同等です。
これは、ユーザーの分類IDが2であるすべてのオープンサービス項目をカウントします。分類IDにかかわらず、すべての保留中のサービス項目、および分類IDに関係なく、すべての保留サービス項目、およびユーザーに割り当てられたすべての保守サービス項目をカウントします。 GROUP BYは、右側に割り当てられた従業員の項目だけがカウントされるようにフィルタリングしますが、用語の一部には部分的な積が存在し、膨大なカウントにつながります。
これは、MySQL、SQLite、またはPostgreSQL用ですか? –
@OMG、あなたは_other_ DBMS 'があることを認識しています。 :-) – paxdiablo
@paxdiablo:私が知っているのは「LIMIT」だけです。そして、私を「シャーリー」と呼んではいけません:p –