2017-03-14 3 views
0

[OK]をので、私はこれらのテーブルを持つデータベースを持っている:SQLで複雑なフロー制御を実装するにはどうすればよいですか?

Products (ID, Producer, Name) 
Producers (ID, Name) 
ProductTypes (ID, Name) 
ProductTypeJunction (ID, ProductID, ProductTypeID) 
Transactions (ID, ProductID, Profit) 

基本的に私は、製品および製品の種類と、各製品間の多対多の関係がプロデューサーを持っています。私はまた、すべての取引(製品売却)のリストとそれがどれくらいの金額を残しているかを把握しています。

今、私はこれを行うことができる必要があります。それは、少なくとも車種から1000のドルを作っているとしたことを意味し、少なくとも1つの特定の製品タイプの1000ドルを作ったプロデューサー、

リストか家具タイプ。複数の製品タイプの販売を組み合わせて1000を超えた場合、それは重要ではありません。少なくとも1つのタイプから1000がなければなりません。

私が試したSQLの機能でこれを達成する方法はないようです。

+0

は、外部キー参照 '' Producers.ID' Products'テーブルに 'Producer'フィールドですか? – ahoxha

+0

はい、ProductTypeJunctionのProductIDとProductTypeIDはProducts.IDとProductTypes.IDの外部キーです –

答えて

1

あなたはそうのようなhavinggroup byを使用する必要があります。

select 
    ProducerName = pro.Name 
    , TypeName  = pt.Name 
    , Profit  = sum(t.Profit) 
from Producers pro 
    inner join Products p 
    on pro.Id = p.Producer 
    inner join ProductTypesJunction ptj 
    on ptj.ProductId = p.Id 
    inner join ProductTypes pt 
    on pt.Id = ptj.ProductTypeId 
    inner join Transactions t 
    on t.ProductId = p.Id 
group by 
    pro.Name 
    , pt.Name 
having sum(t.Profit)>=1000; 
+0

少なくとも1つの商品タイプに対して少なくとも1000の意味があります。 販売チェアと500から600あなたは椅子と700個の$販売コップを販売から$ 1100作った場合、椅子が選択されている あなたは椅子から2000 $売っカップを販売から$ 1100作った場合$カップを販売する、それが十分ではありません 、両製品は –

+0

@shortage_radeonを選択しています私の答えを更新しました、明確化のためにありがとう。 – SqlZim

関連する問題