php - 求个商家和商品对应关系的算法
PHP中文网
PHP中文网 2017-04-11 09:43:38
[PHP讨论组]

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

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

如果有N条数据呢?

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

PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
PHPz

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


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
PHP中文网

尝试写了一下,找出既卖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 );
伊谢尔伦
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的数据,就可以了。

ringa_lee

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号