2017-12-15 7 views
0

提供される記事の表:これらのテーブルはどのようにクエリする必要がありますか?</p> <p><img src="https://i.stack.imgur.com/zh2ln.png" alt="E-R"></p> <p>これは、記事やそれぞれのIDと(最初の)オファーテーブルです:</p> <p><img src="https://i.stack.imgur.com/AKvxm.png" alt="offer"></p> <p>これは、(第2)該入札額である私が持っているデータベースがい

bid 私はだから私はここにこれを過ごしたい

の同じ数を提供している記事の数を照会する必要があります。

ID1 ID2 Number_of_Orders      
    1 2    2     
    1 5    2     
    2 5    2   

私はインライン・ビューにそれを接続しようとしました:

SELECT DISTINCT * FROM 
(SELECT BID.ID as ID1 FROM OFFER 
    INNER JOIN BID ON OFFER.ID=BID.ID 
    GROUP BY GEBOT.ID) v1, 
(SELECT BID.ID as ID2 FROM OFFER 
    INNER JOIN BID ON OFFER.ID=BID.ID 
    GROUP BY BID.ID) v2, 
(SELECT COUNT(GID) as NUMBER_OF_ORDERS FROM BID 
INNER JOIN OFFER ON OFFER.ID=BID.ID 
    GROUP BY BID.ID 
    ) v3; 

しかし、私は彼らが同じ注文(入札)数を持っているという条件で2つのIDをどのように費やすべきか分かりません

+0

[画像の代わりにテキストを入力してください](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking- a question/285557#285557)、画像でなければならないものは何でも記述できます。 –

答えて

0

などの条件を置く:

with cte (id, number_of_bids) as (
    select id, count(*) 
    from bid 
    group by id 
) 
select c1.id as id1, c2.id as id2, c1.number_of_bids 
from cte c1 
join cte c2 
on c2.number_of_bids = c1.number_of_bids 
and c2.id > c1.id 
order by id1, id2; 

     ID1  ID2 NUMBER_OF_BIDS 
---------- ---------- -------------- 
     1   2    2 
     1   5    2 
     2   5    2 

CTEは単純な集約で各IDのオファー数を取得します。 (CTEの代わりにインラインビューで行うこともできますが、各インラインビューで2回カウントしています)。

次に、メインクエリでは、集約されたnumber_of_bidsのCTEと同じものになります。また、第2のIDは第1のIDよりも高く、重複を排除します。これを行なわなければ、ID1が5でID2が2である行が表示されます。つまり、3行のうち最後の行とは逆の行(他の2つの行でも同じ行)とそれに対応するID /カウントが表示されます。

オファーテーブルに参加する必要はありません。オファーテーブルから何もデータを使用していません。

0

これらの2つのta BLESとあなたが各IDの入札をカウントして、マッチを見つけるために、その結​​果に、自己結合をやりたいように見えるようにtable1.bidPrice = table2.bidPrice

+0

select * from OFFER f BID b on f.GID = b.GID where f.bidPrice = b.bidPrice –

+0

Sry、私は誤って同じテーブルを2回挿入しました。それを変更しました – dolu28

+0

それでは、クエリは次のようになります:select * fromoffer f BID b on f.ID = b.ID where f.id IN(SELECT b.ID からbID b GROUP BY b.BIDPrice HAVING COUNT (b.BIDPrice)> 1)助けてほしいと思っています –

関連する問題

 関連する問題