我希望你可以提供幫助,我在DB2,OR和OS中有兩個車輛表,或者是將要交付的汽車的訂單,而OS是那些已經存在的汽車出售,想要諮詢OR表中的所有訂單,但不是那些在OS表中取消的訂單,我通過他們的狀態('8')來標識取消的訂單,我嘗試了這個查詢,但是我得到的訂單只是在OS表中的,並不是所有的訂單都在OS表中,我嘗試了一個OUTER JOIN,但這不是我預期的結果。DB2查詢加入
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表,但不包括在手術檯的那些(對或表沒有SLCD的地位,我要排除所有那些在8個狀態的訂單OS表,但保留那些不在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')
我希望有人能幫助我。非常感謝
你的第二次嘗試是錯誤的,並不會產生相同的結果。第一個看起來對我很好,但我不能完全理解你認爲是錯誤的。因爲它是一個左連接,它將返回左表的所有行 - 這是OR,但是你寫了「OS表中的所有命令」。 – MichaelTiefenbacher
是的,我認爲左外連接會返回OR表中的所有行,但在這種情況下,只返回OS表中具有SLCD狀態的訂單,我還想檢索僅在在OR表中,當我把NOT IN條件放在當我遇到問題時,它不會返回僅在OR表中的訂單。感謝您的幫助,謝謝。 –