3

顧客と注文の2つのテーブルがあります。各顧客には1..nの注文があります。これらは、OrdersテーブルのCustomersテーブルへの外部キーに関係があります。これまでのところ、DB101です。

顧客ごとに1つの行を、その顧客の最新の注文の日付と注文IDとともに返すクエリが必要です。すべての顧客には少なくとも1つの注文があります。これは関数で簡単に実行できますが、SQLで実行したいと思います。

4

2 に答える 2

3

自動インクリメントされたIDの場合、日付との差異がない場合、解決策は次のようになります。

SELECT c.*, o.*
FROM Customer c 
JOIN (SELECT max(id) as order_id, customer_id 
      FROM Order GROUP BY curtomer_id) conn on c.id = conn.customer_id
JOIN Order o on o.id = conn.order_id
于 2012-05-17T09:26:00.603 に答える
1

あなたはDBMSを述べていなかったので、私はANSI準拠のエンジンを想定しています。

select *
from (
    SELECT c.*, 
           o.*, 
           row_number() over (partition by o.customer_id order by order_date desc) as rn
    FROM Customer c 
      JOIN Order o on o.customer_id = c.id
)
where rn = 1
于 2012-05-17T09:31:57.663 に答える