2016-03-29 10 views
0

Umarım bu konuda yardımcı olabilirsiniz, DB2, OR ve OS'de iki araç tablomuz var, VEYA teslim edilecek arabaların siparişlerinin verildiği yer, VE işletim sistemi zaten o arabalar. satıldı, OR tablosundaki tüm siparişlere başvurmak istiyorum ama OS tablosunda iptal edilenleri değil, iptal edilenleri durumlarına göre belirliyorum ('8'), bu sorgu ile denedim, ancak aldığım siparişler sadece OS tablosundakiler değil, tüm siparişler OS tablosunda değil, bir DIŞ JOIN ile denedim ama beklediğim sonuç değil.DB2 Sorgulama Birikimine Katılıyor

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') 

bu sadece işletim sistemi tablosundaki bana tüm siparişleri alır ve OR masa SLCD statüsü yoktur (OR tabloda olanlar hariç, ben bir 8 statüsüne sahip tüm siparişleri dışlamak istediğiniz OS tablosu, ancak OS tablosunda olmayanları tutmak).

Bu, aynı sonuçtur.

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') 

Umarım birisi bana yardımcı olabilir. çok teşekkürler

+0

Kişisel ikinci deneyin yanlış ve aynı sonucu dağıtmayacak. İlk önce benim için iyi görünüyor ama bunun neyle yanlış olduğunu düşündüğünüzü tam olarak anlayamıyorum. Sol birleşim olduğu gibi, sol tablonuzun tüm satırlarını döndürecek - ki bu OR'tır, fakat siz "OS tablosundaki tüm siparişleri" yazdınız. – MichaelTiefenbacher

+0

Evet, sol dış birleştirmenin OR tablosundaki tüm satırları döndüreceğini düşündüm, ancak bu durumda yalnızca SLCD durumuyla OS tablosundaki siparişleri döndürür, SADECE olan siparişlerin verilerini de almak istiyorum OR tablosunda, NOT IN koşulunu koyduğumda, sorun olduğunda, yalnızca OR tablosundaki siparişleri döndürmüyor. Yardımın için teşekkür ederim. –

cevap

0

Bunları verileri alınırken alternatif bir yol var:

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') 
+0

Teşekkür ederim @mustaccio Bahsettiğiniz sorguyu denedim ama hiçbir veri almıyor, sorduğumdan beri sorgunuzu başka bir şekilde denedim bana bir hata veriyor: SELECT PFOR.ORNO, PFOR.ORSC, PFOS.SLCD FR LPMXPFIL .PFOR PFOR INNER JOIN LPMXPFIL.PFOS PFOS ÜZERİNDE PORT.ORNO = PFOS.OBNO OLMUYOR (SELECT PFOS.SLCD, LPMXPFIL.PFOS PFOS PFOS.SLCD = '8') –