14

私は顧客と注文の2つのテーブルを持っています。以下は構造です。

表 - 顧客

  • ID
  • 顧客名

表 - 注文

  • ID
  • order_id
  • 顧客ID

顧客テーブルには顧客レコードがあり、注文テーブルには顧客による注文があります。

orders テーブルのcustomer_idは、customers テーブルのidフィールドにリンクされています。

1 人の顧客がゼロまたは 1 つまたは複数の注文を持つことができるようになりました。顧客のみが最後に注文したものを取得したいと考えています。

次のクエリを単純な非表示の結合で実行すると、顧客によるすべての注文が返されます

SELECT customers.customer_name,orders.order_id FROM orders,customers WHERE orders.customer_id=customers.id

さまざまな JOIN ステートメントも試しましたが、顧客による最後の注文を取得できません。すべての顧客に対して 1 つの SQL クエリで取得したいと考えています。

よろしくお願いいたします。

4

3 に答える 3

13

このクエリを試してください

SELECT 
   c.customer_name, 
   max(o.order_id)
FROM 
   customers c
INNER JOIN
   orders o
ON
   o.customer_id = c.id
GROUP BY 
   c.customer_name

注文テーブルに日付フィールドがないため、最新の注文がmax(order_id).

于 2013-05-28T06:47:40.807 に答える
-1

このクエリを試してください

SELECT 
   c.customer_name, 
   o.order_id
FROM 
   customers c
INNER JOIN
   orders o
ON
   o.customer_id = c.id
ORDER BY 
   o.id desc
LIMIT 1;
于 2013-05-28T07:07:39.330 に答える