有两个表,一个是资产信息表:包括 资产编号,资产类型等信息;
另一个是资产使用表:包括资产编号,使用编号,使用人等信息,
想写一个查询:查拥有两台设备的人的使用信息;
select * from gz_zichan_use where state_id = '1' //使用状态为在用
and name in (select name from gz_zichan_use where state_id='1'group by name having count(name)>=2)//出现过两次
and zichan_id in(select zichan_id from gz_zichan where zichan_type='主机' )//类型为主机

下面这句是自己写,但是查出来结果不对,因为后面的两个条件是冲突的,也就是说可能
名字出现多次,但有些次数却不是主机,而是其他的设备;
(例如有个人拥有一台主机,一台打印机;前两个条件都满足,第三个条件一比对,就查出一条记录事实上,他又不符合)
不知道怎么改

解决方案 »

  1.   


    select * from gz_zichan_use where state_id = '1' //使用状态为在用 
    and name in (select name from gz_zichan_use where state_id='1' zichan_type='主机' group by name having count(name)>=2)//出现过两次 
      

  2.   

    自己的帖子也不能修改啊。select * from gz_zichan_use where state_id = '1' //使用状态为在用 
    and name in (select name from gz_zichan_use,gz_zichan where gz_zichan_use.zichan_id = gz_zichan.zichan_id and state_id='1' and zichan_type='主机' group by name having count(name)>=2)//出现过两次 
      

  3.   

    还是有点小问题,没有完全避免问题描述的情况,
    select * from gz_zichan_use where state_id = '1' //使用状态为在用 
    and name in (select name from gz_zichan_use,gz_zichan where gz_zichan_use.zichan_id = gz_zichan.zichan_id and state_id='1' and zichan_type='主机' group by name having count(name)>=2)//出现过两次 
    如果一个用户拥有两台主机,和一台打印机,则打印机的记录也会出来;我加了个条件,因为主机和打印机的资产编号是有区别的;111——是主机;112——是打印机;
    and zichan_id like“111%”