求个商家和商品对应关系的算法

发布于 2022-09-04 11:57:06 字数 187 浏览 9 评论 0

数据库中有商家对应销售的商品数据,格式如下:
商家1 001
商家1 002
商家1 003
商家2 001
商家2 002
商家3 001
......

怎么找出 既卖001又卖002的商家...

如果有N条数据呢?

如果知道要找的多个商品ID,如何用sql得出结果呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

情场扛把子 2022-09-11 11:57:06

此处假定,商家-商品 的关联在该表中是唯一的。
下述代码是伪代码,提供思路


SELECT seller
FROM (SELECT
        seller,
        count(product) AS product_count
      FROM seller_product
      WHERE product IN (001, 002)
      GROUP BY seller) AS seller_list
WHERE product_count = 2
眼泪都笑了 2022-09-11 11:57:06

尝试写了一下,找出既卖001又卖002的商家ID

SELECT DISTINCT g1.shopid FROM goods g1, goods g2 WHERE g1.shopid = g2.shopid AND g1.goodsid = '001' AND g2.goodsid = '002'

或者多个

SELECT shopid FROM goods WHERE goodsid in (1,2,3,4) GROUP BY shopid HAVING( COUNT(DISTINCT goodsid) >= 4 );
听你说爱我 2022-09-11 11:57:06
SELECT seller.id,GROUP_CONCAT(goods.id) as goods_id FROM seller 
LEFT JOIN goods ON(goods.id=seller.id)
GROUP BY seller.id
HAVING FIND_IN_SET(001,goods_id) AND FIND_IN_SET(002,goods_id)

通过select获取商家id与商品id的关联数据。然后通过find_in_set过滤掉必须含有两个商品id的数据,就可以了。

生寂 2022-09-11 11:57:06

感谢回答,不知道还有没有别的思路

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文