日期:2014-05-18  浏览次数:20421 次

怎么我查询的时候老是查询出重复数据?
表firesystype、devicetype、devices 
firesystype与devicetype一对多,devicetype与devices 一对多


 select firesystype.tiSysType,firesystype.vSysdesc from firesystype left join devicetype on firesystype.tiSysType=devicetype.tiSysType left join devices on devicetype.tiDeviceType=devices.tiDeviceType left join gateway on gateway.Gatewayaddress=devices.Gatewayaddress where gateway.orgid='201201020100009'

查询的结果:
129 火灾自动报警系统
129 火灾自动报警系统
22 消防应急照明和疏散指示系统
135 灭火器
22 消防应急照明和疏散指示系统
129 火灾自动报警系统
22 消防应急照明和疏散指示系统
135 灭火器
。。。。。。。。。。。。。。。。。。。。。。。。。。。。都重复了、

------解决方案--------------------
SQL code

--加 distinct 过滤掉重复的
select distinct firesystype.tiSysType,firesystype.vSysdesc from firesystype left join devicetype on firesystype.tiSysType=devicetype.tiSysType left join devices on devicetype.tiDeviceType=devices.tiDeviceType left join gateway on gateway.Gatewayaddress=devices.Gatewayaddress where gateway.orgid='201201020100009'

------解决方案--------------------
firesystype left join devicetype on firesystype.tiSysType=devicetype.tiSysType 
left join devices on devicetype.tiDeviceType=devices.tiDeviceType 
left join gateway on gateway.Gatewayaddress=devices.Gatewayaddress

在于这里,四个表,按照关联条件查出来的数据应该有重复的,就是说其中有可能存在 一对多 的情况