2016-05-11 24 views
0

レポートの作成に役立つ3つのリクエストがあり、別々に作業しています。ポイントは、彼らは異なるパラメータで同じ被験者の情報を与えていると私は彼らが一緒に結合することができると感じている。その結果、4列のレポートが1つ表示されます:promotertotal_regisrtationswith_photowithout_photoです。3つのSQLリクエストを1つにまとめる必要があります

それを行うことができますか

:(私はさまざまな方法でそれらに参加しようとしたが、まだそれが動作して取得することはできません?

//総合的なレポート

SELECT user.created_by AS promoter, COUNT(*) as total_registrations 
FROM user 
JOIN project ON user.id = project.client_id 
JOIN task ON project.id = task.project_id 
WHERE task.type = 'registration' 
AND (
user.created_by =414 
OR user.created_by =415 
OR user.created_by =488 
) 
GROUP BY user.created_by 

//付き写真

SELECT COUNT(*) AS with_photo 
FROM user 
JOIN project ON user.id = project.client_id 
JOIN task ON project.id = task.project_id 
WHERE task.type = 'registration' 
AND (
task.status = 'request' 
OR task.status = 'validated' 
) 
AND (
user.created_by =414 
OR user.created_by =415 
OR user.created_by =488 
) 
GROUP BY user.created_by 

//写真

なし
SELECT COUNT(*) AS without_photo 
FROM user 
JOIN project ON user.id = project.client_id 
JOIN task ON project.id = task.project_id 
WHERE task.type = 'registration' 
AND task.status = 'new' 
AND (
user.created_by =414 
OR user.created_by =415 
OR user.created_by =488 
) 
GROUP BY user.created_by 
+0

ユースケース式。 – jarlh

+0

質問を編集し、サンプルデータと希望の結果を含めてください。 –

答えて

0

CASEを使用してください。条件付きカウントを行うには、選択リストに

クエリ

SELECT user.created_by AS promoter, 
COUNT(*) as total_registrations, 
SUM(CASE WHEN task.status IN ('request', 'validated') THEN 1 END) AS with_photo, 
SUM(CASE task.status WHEN 'new' THEN 1 END) AS without_photo 
FROM user 
JOIN project ON user.id = project.client_id 
JOIN task ON project.id = task.project_id 
WHERE task.type = 'registration' 
AND(
    user.created_by =414 
    OR user.created_by =415 
    OR user.created_by =488 
) 
GROUP BY user.created_by; 
+0

ありがとう!助けてくれました) –

+0

@MaxFinchuk:これがあなたの問題を解決した場合、これを答えとして記入してください。 – Wanderer

+0

もう一度やり直してください。 –

関連する問題