顧客テーブルと注文テーブルがあります。
Customers テーブルには次のフィールドがあります。id, name, status_id
Orders テーブルには次のフィールドがあります。id, customer_id, order_date
各顧客は多くの注文を持つことができます。
select
注文のすべてのcustomers
order by
status_id と最後の order_date を取得できる SQL クエリがあるかどうかを知りたいです。
したがって、結果には最初にステータス1 のすべての顧客がリストされ、その中で、最新の注文が最も新しい顧客から最も新しい注文の顧客の順にリストされます。次に、ステータス 2 を同じ方法でリストし、次にステータス 3 を同じ方法でリストします。リスト全体で、各顧客は 1 回だけ表示されます。
例えば。
顧客表
id, name, status_id
1, john, 2
2, jane, 1
3, tim, 1
注文表
id, customer_id, date
1, 1, 2013-01-01
2, 1, 2011-10-01
3, 2, 2012-12-01
4, 2, 2010-03-10
5, 3, 2011-02-21
6, 3, 2012-01-11
クエリは、このような顧客のリストを提供する必要があります
2 jane
3 tim
1 john
Tim と Jane は、ステータスが 1 であるため、john の前です。Jane の最後の注文 (2012-12-01) は、Tim の (2012-01-11) よりも新しいため、Tim の前です。
私はこれを試しました
SELECT customers.id, customers.name, customers.status_id
FROM customers
JOIN orders ON customers.id = orders.customer_id
ORDER BY customers.status_id, orders.date
しかし、何度も登場するお客様もいます。
助けてくれてどうもありがとう、フィル