为了账号安全,请及时绑定邮箱和手机立即绑定

求一条SQL语句问题

求一条SQL语句问题

慕虎7371278 2018-12-06 17:08:16
有三张表 UserInfo用户信息表 字段 uid, uname  Product产品表 字段 pid,pname  Buyinfo购买信息表 bid,uid,pid 查询购买所有产品的用户该怎么实现?
查看完整描述

12 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

select unamefrom dbo.UserInfowhere uid in ( select uid from (select count(1) as pcount,uid  from (select distinct uid,pid from Buyinfo) a group by uid) b inner join (select count(1) as pcount from Product) c on c.pcount = b.pcount) 

查看完整回答
反对 回复 2019-01-07
?
心有法竹

TA贡献1866条经验 获得超5个赞

刚才理解错了..

查看完整回答
反对 回复 2019-01-07
?
繁花如伊

TA贡献2012条经验 获得超12个赞

是查询购买了所有产品的用户
查看完整回答
反对 回复 2019-01-07
?
SMILET

TA贡献1796条经验 获得超4个赞

是查询购买了所有产品的用户 那些用户购买了所有的产品 不是查所有用户的购买信息
查看完整回答
反对 回复 2019-01-07
?
皈依舞

TA贡献1851条经验 获得超3个赞

@
Raycloud:是查询,一个客户买了那些产品,把每个产品列出来对吗?
查看完整回答
反对 回复 2019-01-07
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

提供个思路:
   1) 将购买信息表根据Uid进行分组,同时去除重复购买信息
   2) 将上述结果Count下和产品表的Count对比,相等则说明用户购买了所有商品
   3) 最后将用户信息表的uid和第二步结果的uid对比

select u.uid from UserInfo as u where u.uid = (select uid from  buyinfo as b where uid=(select top 1 uid from buyinfo where uid=b.uid) group by uid having Count(uid)= (select Count(pid) from product))

查看完整回答
反对 回复 2019-01-07
?
呼唤远方

TA贡献1856条经验 获得超11个赞

思路是这样的
但是你的语句有问题
最后综合了
select uname from UserInfo u join(
select uid from (select uid,pid from Buyinfo group by uid,pid)a group by uid having count(pid)=(select count(1)from Product))tu
on u.uid=tu.uid
查看完整回答
反对 回复 2019-01-07
?
慕慕森

TA贡献1856条经验 获得超17个赞

看看我这个

  SELECT u.uid '用户id',u.uname '用户' FROM userinfo u
INNER JOIN
   (SELECT uid  FROM buyinfo
   GROUP BY  uid
   HAVING COUNT(DISTINCT pid)=(SELECT COUNT(pid)from product)) AS f
ON u.uid=f.uid

查看完整回答
反对 回复 2019-01-07
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

呵呵,楼上的可以,学习了

查看完整回答
反对 回复 2019-01-07
  • 12 回答
  • 0 关注
  • 667 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信