1

注文のすべてのデータが保存されるテーブル (注文) があります。

注文したすべての顧客を一覧表示したいのですが、それ以降、たとえば 3 か月間注文していない顧客に限定します。

データベースからの関連するテーブル情報は次のとおりです (順序):

order_id、customer_id、firstname、lastname、date_added

よろしくお願いします。

4

1 に答える 1

2

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.

于 2012-11-20T17:18:20.457 に答える