顧客と注文の2つのテーブルがあります。各顧客には1..nの注文があります。これらは、OrdersテーブルのCustomersテーブルへの外部キーに関係があります。これまでのところ、DB101です。
顧客ごとに1つの行を、その顧客の最新の注文の日付と注文IDとともに返すクエリが必要です。すべての顧客には少なくとも1つの注文があります。これは関数で簡単に実行できますが、SQLで実行したいと思います。
顧客と注文の2つのテーブルがあります。各顧客には1..nの注文があります。これらは、OrdersテーブルのCustomersテーブルへの外部キーに関係があります。これまでのところ、DB101です。
顧客ごとに1つの行を、その顧客の最新の注文の日付と注文IDとともに返すクエリが必要です。すべての顧客には少なくとも1つの注文があります。これは関数で簡単に実行できますが、SQLで実行したいと思います。
自動インクリメントされた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
あなたは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