注文のすべてのデータが保存されるテーブル (注文) があります。
注文したすべての顧客を一覧表示したいのですが、それ以降、たとえば 3 か月間注文していない顧客に限定します。
データベースからの関連するテーブル情報は次のとおりです (順序):
order_id、customer_id、firstname、lastname、date_added
よろしくお願いします。
customer_id、姓名、および date_added がタイムスタンプ、日付、日時 (文字列ではない) などの有効な時間フィールドだけであると仮定します。
SELECT o.customer_id, o.firstname, o.lastname, MAX(o.date_added) AS latest_date FROM `order` o
LEFT JOIN `order` o2 ON o.customer_id = o2.customer_id
AND o2.date_added >= NOW() - INTERVAL 3 MONTH
WHERE o2.order_id IS NULL
GROUP BY o.customer_id, o.firstname, o.lastname
テーブル名「order」のバッククォートに注意してください。これはORDER
、Mysql の予約語であるためです。DB、テーブル、または列の命名に予約語を使用しないようにしてください。
このように考えてください。すべてのユーザーを提供し、3 か月以内の注文に関するすべての注文情報が存在する場合は含め、注文のないユーザーのみを表示します。
顧客テーブルのスキーマを提供する場合、これをよりクリーンにしてgroup by
.