アプリケーションベースのフィルタリングや複数のクエリに頼ることなく、mysqlで特定のクエリを実行できるかどうかを確認しようとしています。
基本的に、私には顧客テーブルがあり、すべての人(私の顧客ではない人を含む)の証明書テーブルがあります。
各顧客は複数の証明書を持つことができ、私は各証明書に有効期限を持っています。
証明書の有効期限が近づいている(2週間以内)顧客を選択できるようにしたいのですが、有効期限が長い別の証明書を持っていません。
最初の部分は簡単です。2つのテーブル間のssnに基づいて内部結合を実行します。ここで、where句は、現在から現在までの日付の終了日+2週間を次のように指定します。
select certs.ssn, certs.cert_num, certs.cert_start, certs.cert_finish
from certs
INNER JOIN customers ON certs.ssn = customers.ssn
where certs.cert_finish < Date_ADD(now(), INTERVAL 14 DAY)
and certs.cert_finish > now()
ただし、有効期限が長い他の証明書を持っている顧客を除外する方法を見つけることができません。
何かアイデアはありますか?前のクエリが返したssnsのみのmax(cert_finish)に基づくサブクエリを考えています。