当前位置: 代码迷 >> Sql Server >> 求一条sql查询语句 两表关联字段数值不对应的处置
  详细解决方案

求一条sql查询语句 两表关联字段数值不对应的处置

热度:21   发布时间:2016-04-24 10:14:46.0
求一条sql查询语句 两表关联字段数值不对应的处理
标题表述的可能不是很清晰:见表
表一: empID   empname  empdpt
                  1            张三               5
                  2           李四                6
                  3           王五                7

表二: cradID            LogDateTime
                  1             2014-5-21 15:33:32
                  2             2014-5-22 15:33:32
                  6             2014-5-26 15:33:32

其中表一的empid和表二的cradid是关联字段,由于表二的数据写入时误将表一中的王五的Empid值写成6,导致关联字段数值不对应(表二内容第三方提供不可更改),现在想要实现这样的查询功能,不知道可能实现啊?

empid   empname     LogDateTime
   1            张三              2014-5-21 15:33:32
   2            李四              2014-5-22 15:33:32
   3            王五              2014-5-26 15:33:32
或者是
empid   empname     LogDateTime
   1            张三              2014-5-21 15:33:32
   2            李四              2014-5-22 15:33:32
   6            王五              2014-5-26 15:33:32 
------解决方案--------------------
本帖最后由 DBA_Huangzj 于 2014-07-31 11:12:43 编辑
那只能再加一个表,列名两表的对应关系,查询的时候3表联查,但是这需要手动维护。根本办法还是要求第三方修改程序
------解决方案--------------------
select * from 表一 as a inner join 表二 as b  on (a.empID=b.cradID and a.empID!=3 and b.cradID!=6) or (a.empID=3 and b.cradID=6)

虽然可以实现,但最好改一下数据,保证数据的一致性,第三方的改不了,就改自己的麻,变通一下。
------解决方案--------------------
加表,说明 表一 的  empID    字段,与表二 empid    字段的关系
这样才能够连接吧

不然你字段都不对应,也不是全部都不对应的,里面的规律能找的出来么?

建如表三:
empID    empid
     3              6

或者,改程序,总要统一起来才好。
------解决方案--------------------
两表之间的关联表相当重要啊。如果没有关联 即使写出来了效率也很低下的
  相关解决方案