2010-12-28 4 views
-1

Ich habe versucht, dieses Problem seit vielen Tagen zu lösen. Aber würde nicht. Bitte hilf mir.Schreiben Sie eine SQL, um meine Anforderung zu erfüllen

Ich brauche eine SQL, um product_code, product_name, qty_sold, last_order_date für alle Produkte aufzulisten, die innerhalb eines Datumsbereichs nach der Anzahl der verkauften Mengen verkauft wurden.

Meine Tabellenstruktur:

tbl_product (product_id, product_code, product_name)

tbl_order_detail (order_item_id, order_id, product_id, Menge)

tbl_order (order_id, order_date)

+6

geholfen. Es tut mir leid, wenn ich den Punkt völlig verpasse, aber ich vermute, dass du vielleicht willst, dass wir einen Auftrag für dich machen. Könnten Sie die SQL, die Sie bisher geschrieben haben, posten? –

+0

Und was hast du probiert (post code), und was läuft schief? – Jocke

+0

@Jocke - Angesichts der Aussage "Ich habe versucht, dieses Problem für viele Tage zu lösen. ** Aber würde nicht **" bedeutet, dass sie überhaupt nicht versucht haben ... entweder das oder die Bedeutung ist in der Übersetzung verloren :) – Tony

Antwort

2

Sie könnten Verwenden Sie group by, um Statistiken pro Produkt zu berechnen. Dann können Sie sum und max verwenden, um die erforderlichen Aggregatdaten abzurufen. Zum Beispiel:

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 kann angeben, erklären ein wenig mehr über die Abfrage, es wäre hilfreicher ... – 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 

Leider kann ich dieses Recht jetzt nicht testen.

Schlüsselpunkte sind: Verwenden Sie die group by-Klausel, um die Werte für Menge und Bestelldatum zu aggregieren, und verwenden Sie max und sum, um die gewünschten Werte zu finden.

: first_day: und: last_day: Das sieht aus wie eine typische Kurszuordnung sind Platzhalter für die tatsächlichen Werte

Hoffe, dass ich Sie

Verwandte Themen