那是我的数据库:
这是(第一个)商品表,其中包含文章和相应的ID:
这是(第二个)投标表,其中包含所提供的文章:
我必须查询提供相同数量
的文章的数量所以我想在这里花这个:
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;
但我不知道如果他们有相同数量的订单(出价),我应该如何使用这两个ID
答案 0 :(得分:0)
你只需加入(内连接)这两个表并放入条件如table1.bidPrice = table2.bidPrice
答案 1 :(得分:0)
您似乎想要计算每个ID的出价,然后对该结果进行自我加入以查找匹配项:
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来执行此操作,但是您可以在每个内联视图中对它们进行两次计数)。
然后主要查询将聚合的number_of_bids
上的CTE连接到自身,并且还有一个第二个ID高于第一个ID,这消除了重复。如果不这样做,你会看到ID1为5且ID2为2的行,即你想要的三行中的最后一行(和其他两行相同),以及与自身匹配的每个ID /计数
您不需要加入优惠表 - 您没有使用其中的任何数据。