このmysql
クエリを動作させようとしています。MySQL Left Join Countアクティビティとnullを返す
説明:2つのテーブルがあり、1つはすべてのIDの列を持つプロジェクトで、もう1つはプロジェクトのテーブルに関連するprojectidという列を持つすべてのアクティビティです。私は、ユーザーIDを持ち、1でアクティブなアクティビティテーブル内のすべてのアクティビティを数えたいと思っています。 ここではトリッキーな部分が来て、私は働くことができません。それは私がBO内で一意PROJECTIDに対応するすべてのプロジェクトを表示したいと思い活動テーブルに欠けているプロジェクトを収集し、カウント0でこれらを提示していない
SELECT p1.`id` AS projectid ,count(a1.`id`) AS activitiescount ,a1.`userid` AS userid ,p1.`orgid` AS orgid
FROM `projects` AS p1
LEFT JOIN `activities` AS a1
ON p1.`id`=a1.`projectid`
WHERE p1.`orgid`=3
AND a1.`userid` = 26
AND a1.`active`=1
OR a1.`id` IS null
GROUP BY p1.`id`
ORDER BY p1.`name` DESC
与える:
ご覧のとおり、たとえば6と2では正しくありません。 助けてください。ありがとうございました。
アクティビティの制限を結合自体に移動します。それ以外の場合、左結合は内部結合のように動作します。ユーザID26でなくアクティブ1でないため、ヌルは削除されます。 – xQbert