2016-03-18 3 views
0

次のクエリがあり、私はtasks_triggers_evidenceに参加しています。MySQL Joinを使用してデータを取得しますが、行を除外しない

私はフィールドevidence_acceptedの値を取得したいと思います。

しかし、残念ながら、一致するものがない場合は、すべての行が除外されます。私はそれが結果を返すようにしたいが、evidence_acceptedの場合はNULLを返す。

したがって、データを取得するために参加しますが、基本的に結果を除外するわけではありません。それ、どうやったら出来るの?

SELECT o.task_id, o.task_link, SUM(t.trigger_conversions), SUM(t.trigger_reward) AS reward, e.evidence_accepted 
FROM tasks AS o 
INNER JOIN advertisers AS a 
ON a.advertiser_id = o.task_advertiser_id 
INNER JOIN tasks_triggers AS t 
ON o.task_id = t.trigger_task_id 
LEFT JOIN tasks_triggers_evidence AS e 
ON e.evidence_trigger_id = t.trigger_id 
WHERE o.task_approved = 1 AND o.task_deleted = 0 AND o.task_paused = 0 AND t.trigger_removed = 0 AND e.evidence_account_id = ? 
AND a.advertiser_balance > 0 
GROUP BY o.task_id 
ORDER BY reward DESC 
+0

。 –

答えて

1

書き込み条件e.evidence_account_id = ?WHEREセクションが、LEFT JOIN中にはない:

SELECT o.task_id, o.task_link, SUM(t.trigger_conversions), SUM(t.trigger_reward) AS reward, e.evidence_accepted 
FROM tasks AS o 
INNER JOIN advertisers AS a 
    ON a.advertiser_id = o.task_advertiser_id 
INNER JOIN tasks_triggers AS t 
    ON o.task_id = t.trigger_task_id 
LEFT JOIN tasks_triggers_evidence AS e 
    ON e.evidence_trigger_id = t.trigger_id AND e.evidence_account_id = ? 
WHERE o.task_approved = 1 
AND o.task_deleted = 0 
AND o.task_paused = 0 
AND t.trigger_removed = 0 
AND a.advertiser_balance > 0 
GROUP BY o.task_id 
ORDER BY reward DESC 
`JOIN`条件に` e.evidence_account_id`フィルタを移動し
+0

それは完璧に動作し、私は何かを学んだ感じ!感謝 –

関連する問題