詳細:
基本的に2つのMYSQLテーブル(連絡先とトランザクション)があり、2つの条件に基づいてcontactidを取得する必要があります
- トランザクションがまったくないすべての連絡先(contactid)を取得します
- 1つ以上のトランザクションがあるが、すべてキャンセルステータスの連絡先のみを取得します。
ヘルプ!?
あなたは実際に単純な左結合でこれを達成することができます...そしてNULL(見つかりません)を探します。左結合を実行すると、右側の一致に関係なく、左側のテーブルからすべてのレコードが取得されます。したがって、キャンセルされた= "No"のトランザクションテーブルに結合条件を特に設定し、一致を見つけた場合は、結果セットからそれを無視します。トランザクションにレコードがない場合、またはすべてがキャンセル済み=「はい」に設定されている場合、それらは参加条件から除外されるため、「見つかりません」と見なされます。
select
c.ContactID
from
Contacts c
LEFT JOIN Transactions t
on c.ContactID = t.ContactID
AND t.Cancelled = "yes"
where
t.contactID is null