2つのテーブルがあります。 1つはプロジェクトのリストを含み、もう1つはそれらのプロジェクトのタスクのリストを含む。関連するすべてのレコードが文字列と等しいすべてのレコードを取得します。
すべてのタスクのステータスが「完了」であるプロジェクトのみのリストを取得します。
プロジェクト表:
は私のデータは、このようになります
ID,ProjectName,ProjectStatus
タスク表:私はすべてのレコードを取得するための基本的なSELECT文を行うことができます
ID, ProjectID, TaskName, TaskStatus
Tasks.ProjectID = Projects.ID
、そして、TaskStatusが特定の状態である場所をフィルタリングできますが、再び私は、すべてのタスクが完了したプロジェクトのリストがほしいだけです。
ありがとうございました!
select *
from Projects
where ID NOT IN (select ProjectID from Tasks where TaskStatus = 'COMPLETE')
1または使用するかどうか:あなたはまた、サブクエリではありませんを使用することができます
を完了するために、
select *
from Projects P
where NOT EXISTS (select 1 from Tasks where Tasks.ProjectID = P.ID and TaskStatus <> 'COMPLETE')
編集:
を:あなたは、関連するすべてのタスクが完了していると言うとき、あなたはそのゼロ以上のタスクのすべてを意味し、従来の方法で用語を使用しているが完了している、またはプロジェクトによって少なくとも1つのタスクが必要になることはありますか?通常、関連するタスクを持たないプロジェクトは、あなたが望むものになりますが、一部の人は、面白く非古典的な方法で「すべて」を使用します。 –
清算についてお尋ねいただきありがとうございます。私はすべてを意味しました。プロジェクトが作成されたときに最初のタスクを作成するようにアプリケーションを作成しました。 –