2017-01-23 2 views
0

私は2つのテーブルがあります。 A customersテーブルとordersテーブルです。 customersテーブルには、今まで注文したことのある人のリストがあり、ordersテーブルにはこれまでに行われたすべての注文のリストがあります。これらのテーブルはcustomer.ID = orders.CustomerIDに接続されています。各顧客には固有のIDがあります。特定の日付以降に注文していないSQLの顧客データを削除してください

orders表はまた、Dateの順番を示しています。特定の日付を指定して注文していないすべての顧客の行を削除したいと思います。

次のように私がこれまで持っているクエリは次のとおりです。

DELETE * FROM customers join orders on customers.id = orders.CustomerID WHERE orders.Date <= 'Date Input form Form';

はしかし、私は前と後の両方に注文した顧客が指定した日付が同様に削除されることを恐れ、と私はしないでくださいそれが起こることを望みます。

私が探しているロジックは次のようによりそうです。その後も

delete customers where the orders.date is !> than the given date 

、このロジックは、指定した日付の前に、与えられた日付以降に注文した顧客を保護しますか?

これを達成するにはどうすればよいですか?

+0

これは、指定された日付より前に注文した顧客を削除します。 –

+0

はい、ただし、指定された日付の前にのみ注文した場合は、削除したいものです。 @JonathanVanDam – Tom

+0

サブクエリを使用して各顧客のmax(orders.Date)を検索し、指定された日付よりも小さいもののみを削除します。 http://stackoverflow.com/questions/44712​​77/mysql-delete-from-with-subquery-as-condition –

答えて

0

おそらくこのようなクエリを提案できますか?

DELETE FROM customers WHERE customer.id NOT IN 
(SELECT order.customer_id from orders where order.date > cutoff) 

お客様は、カットオフ後に何かを注文する必要があります。

+0

これはとても簡単です、ありがとうございます。 – Tom

関連する問題