1

顧客テーブルと注文テーブルがあります。

Customers テーブルには次のフィールドがあります。id, name, status_id

Orders テーブルには次のフィールドがあります。id, customer_id, order_date

各顧客は多くの注文を持つことができます。

select注文のすべてのcustomers order bystatus_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

しかし、何度も登場するお客様もいます。

助けてくれてどうもありがとう、フィル

4

2 に答える 2

-1

試す:

SELECT custome.id, customer.name FROM customer JOIN 
    `order` ON customer.id = `order`.customer_id GROUP BY customer.id ORDER BY customer.status, `order`.date DESC
于 2013-05-07T05:38:55.983 に答える