2011-10-30 10 views
-2

私はデータベース内でSQLコマンドを実行する必要があり、これを理解することはできません。トリッキーなSQLクエリ

「商品を1回以上販売した業者の名前を表示する」ベンダー、アイテム、および注文数をリストします。 12月30日の240アイテムのうち12アイテムであり、アイテム240の2つのトータルオーダー(20ではない)としてカウントされます。

Here is our DB これまで私がこれまで行ってきたことは次のとおりです。私はそれが間違っていることは分かっていますが、私はそれを正しくする方法を知らない。

select v.VENDORID, poi.PARTNUM, count (po.PONUM) 
    from vendor v, purchaseorder po, poitems poi 
    where v.VENDORID=po.VENDORID and po.PONUM=poi.PONUM 

ご協力いただければ幸いです。本当にありがとう!

+0

はこの宿題ですか? –

+4

長い道のりの宿題のような匂い。 – bos

+1

ベンダーと部品を接続してはいけませんか?私が意味することは、ベンダーが部品を販売していないということですか? – abruski

答えて

2

クエリにHAVINGとGROUP BYがありません。クエリのようなものでなければなりません:

SELECT v.name, poi.PARTNUM, count (po.PONUM) 
FROM vendor v 
LEFT JOIN purchaseorder po ON (v.vendorid=po.vendorid) 
LEFT JOIN poitems poi ON (po.PONUM=poi.PONUM) 
WHERE poi.PARTNUM IS NOT NULL 
GROUP BY (v.vendorID, poi.partnum) 
HAVING COUNT(po.ponum) > 1 
0

このクエリは、あなたのために働く希望:

Select name 
,description 
,count(quantity) 
from parts p 
,(Select a.vendorid,name,ponum from purchaseorders a, 
(Select vendorid,count(*) from purchaseorders 
--All vendors who have purchased more then once 
group by vendorid having count(vendorid)>1) b 
,vendor v 
where a.vendorid=b.vendorid 
and v.vendorid=a.vendorid) o 
,(select vendorid,o.ponum,partnum,count(partnum) quantity 
--the quantity of orders  placed 
from poitems p ,purchaseorders o 
where o.ponum=p.ponum 
group by vendorid,partnum,o.ponum) i 
where i.vendorid=o.vendorid 
and p.partnum=i.partnum 
and i.ponum=o.ponum 
group by name,description 
関連する問題