2010-12-28 5 views
-1

私はこの問題を長年にわたって解決しようとしてきました。しかし、そうではありません。私を助けてください。私の要求を満たすSQLを書く

販売数量でソートされた日付範囲内で販売されたすべての製品について、product_code、product_name、qty_sold、last_order_dateをリストするSQLが必要です。

私のテーブル構造:

tbl_product(PRODUCT_ID、PRODUCT_CODE、PRODUCT_NAME)

tbl_order_detail(order_item_id、ORDER_ID、PRODUCT_ID、数量)

tbl_order(ORDER_ID、ORDER_DATE)

+6

を助けた実際の値のプレースホルダです。私はポイントを完全に逃している場合は申し訳ありませんが、私はあなたが私たちにあなたのための譲渡をしたいと思うかもしれないと思う。これまで出てきたSQLを投稿できますか? –

+0

何を試しましたか(コードを投稿してください)、何がうまくいかないのですか? – Jocke

+0

@Jocke - "私はこの問題を長年にわたって解決しようとしていましたが**しかし、**は"全く試していないことを意味しています。 :) – Tony

答えて

2

あなたは可能性があり製品ごとの統計情報を計算するにはgroup byを使用してください。次に、summaxを使用して、必要な集計情報を取得できます。たとえば、次のように

select p.product_code 
,  p.product_name 
,  sum(od.quantity) as qty_sold 
,  max(o.order_date) as last_order_date 
from tbl_product p 
join tbl_order_detail od 
on  p.product_id = od.product_id 
join tbl_order o 
on  od.order_id = o.order_id 
where o.order_date between '2010-01-01' and '2010-02-01' 
group by 
     p.product_code 
,  p.product_name 
order by 
     sum(od.quantity) desc 
+0

tanx andomar.ifがクエリについてもう少し詳しく説明すると、もっと役立つはずです... – rgksugan

1
select 
    p.product_code, p.product_name, sum(od.quantity) as qty_sold, max(o.order_date) as last_order_date 
from tbl_product p join tbl_order o join tbl_order_detail od on 
    (p.product_id=o.product_id, o.order_id = od.order_id) 
where 
    order_date between :first_day: and :last_day: 
group by product_code, product_name 
order by last_order_date 

私は今、この権利をテストすることはできません申し訳ありません。

キーポイントは次のとおりです。group by句を使用して数量と注文日付の値を集計し、maxとsumを使用して目的の値を見つけます。

:first_dayは:と:LAST_DAY:

ホープ私はあなたにこれが一般的なコースの割り当てのように見えます

関連する問題