我有一个临时表,该表通过一些业务逻辑进行填充,并显示客户和在库存中有该产品的卖方所要求的产品。
以下是表格内容的简化视图:
ID ProductID SellerID
1 1000 1
2 2000 1
3 3000 1
4 1000 2
5 3000 2
6 1000 3
7 3000 3
我需要编写一个 T-SQL 查询,该查询仅返回其库存中包含所有请求的产品的SellerID(或SellerID列表)。在此特定示例中,我们可以看到只有SellerID = 1拥有所有产品(ProductID的1000、2000和3000),因此查询应仅返回一个结果集:
SellerID = 1
在某些情况下,多个卖家可能拥有所有产品,因此应返回正确的SellerID列表。 (请根据需要随意编辑问题的标题)。
有什么想法或解决方案吗?谢谢。
答案 0 :(得分:2)
您可以使用public function encrypt()
{
$data = [
'my_account' => "100081",
'status' => "2",
'ID' => "3",
'message' => 'Approved'
];
$stringData = json_encode($data);
$key = utf8_encode("testt123boowe456");
$iv = utf8_encode("13313310");
$result = openssl_encrypt($this->zeroPadding(utf8_encode($stringData), 8), 'DES-EDE3-CBC', $key, 0, $iv);
return bin2hex($result);
}
和group by
:
having
这假定行没有重复。
我要补充一点,您可能有一些卖家没有所有产品。如果您想让卖家购买最多产品:
select sellerid,
from t
group by sellerid
having count(*) = (select count(distinct productid) from t);
您也可以在不使用子查询的情况下对此进行措辞:
select s.*
from (select sellerid, count(*) as num_products,
rank() over (order by count(*) desc) as seqnum
from t
group by sellerid
) s
where seqnum = 1;
答案 1 :(得分:1)
您通过SellerID
进行汇总,并使用having
子句进行过滤,该子句将每个ProductID
的不同SellerID
的计数与不同的{{1}的总数进行比较}可用的表格:
ProductID