DB2 Query Joins

时间:2016-03-29 17:31:59

标签: join db2

我希望你可以帮忙解决这个问题,我在DB2,OR和OS中有两个车辆表,或者是将要交付的车辆的订单,OS是那些已经售出的车辆,想要查询OR表中的所有订单,但不是OS表中取消的订单,我根据状态识别取消的订单(' 8'),我试过这个查询,但订单我得到的只是操作系统表中的那些,并非所有的命令都在操作系统表中,我尝试使用OUTER JOIN,但这不是我预期的结果。

SELECT OR.OBNO, OR.ORSC, OS.SCLD
FROM
TABLE.OR LEFT OUTER JOIN TABLE.OS ON OR.OBNO=OS.OBNO 
WHERE OS.SLCD NOT IN ('8')

这只能获取OS表中的所有订单并排除OR表中的订单(OR表没有SLCD状态,我想排除OS表中具有8状态的所有订单但是保留那些不在OS表中的那些。)

这个结果是一样的。

SELECT OR.OBNO, OR.ORSC, OS.SCLD
FROM
TABLE.OR LEFT OUTER JOIN TABLE.OS ON OR.OBNO=OS.OBNO AND OS.SLCD NOT IN ('8')

我希望有人可以帮助我。非常感谢

1 个答案:

答案 0 :(得分:0)

我认为还有另一种检索这些数据的方法:

SELECT OR.OBNO, OR.ORSC, OS.SCLD
FROM TABLE.OR WHERE NOT EXISTS 
  (SELECT 1 FROM TABLE.OS WHERE OR.OBNO=OS.OBNO AND OS.SLCD = '8')