私は2つのテーブルを持っています - プロジェクトとステータスの更新。 ProjectテーブルにはID、優先度、ステータスなどのフィールドがあり、ステータス更新テーブルにはProjectIDフィールドと日付フィールドがあります。SQL左結合が、左のテーブルにすべてのレコードを必要としません
私は、完了またはキャンセルされていない優先度の高いすべてのプロジェクトを取得し、過去14日間にステータス更新が関連付けられていないものを表示するクエリを作成しようとしています。
私は以下を持っていますが、ステータスが完了またはキャンセルされていない優先度の高いプロジェクトでは、すべてのプロジェクトを左のテーブルから除外しています。
どのようなヘルプも大いに推奨されます。
Select proj.id, proj.Priority, proj.status, proj.ProjectName, status_tmp.statusdate, status_tmp.statusdetail
FROM proj
LEFT JOIN (SELECT s1.*
FROM projectstatus AS s1
LEFT JOIN projectstatus AS s2
ON s1.statusproj = s2.statusproj AND s1.statusdate < s2.statusdate
WHERE s2.statusproj IS NULL) as status_tmp
ON (proj.id=status_tmp.statusproj)
where proj.Priority='High' AND proj.status!='Cancelled' and
proj.status!='Completed' AND
status_tmp.statusdate < DATE_SUB(CURDATE(),INTERVAL 14 DAY) OR
status_tmp.statusdate IS null
ありがとうございました...とても近いですがまだまだです。 – Phill