2011-08-23 77 views
0

首先,SQL;如何使用Where条件只有一个列

Select Count(*) 
From PROSPECT_MASTER //Result:12730 row 


Select Count(*) 
From YAZ..MARDATA.S_MUSTERI // Result: 1112 row 

这是我的查询;

SELECT a.ID, a.TURQ_ID, a.UNVAN, a.TIP, a.AKTOR, 
     a.GSM_ALAN, a.GSM_TEL, a.IS_ALAN, a.IS_TEL, 
     a.IS_EXT, a.EV_ALAN, a.EV_TEL, a.ADRES, 
     a.STF_KONTAK, 
     (CASE WHEN A.YAZ_ADRES IS NULL 
     THEN (B.IS_ADRES1 +' '+B.IS_ADRES2) 
     ELSE A.YAZ_ADRES END) 
     COLLATE DATABASE_DEFAULT AS YAZ_ADRES , A.SEHIR, A.PS, A.MEMO 
FROM PROSPECT_MASTER A, YAZ..MARDATA.S_MUSTERI B 
WHERE A.ID IN (B.TC_KIM_NO, B.VERGI_NO) // Result 1070 row 

为常,A.ID IN (B.TC_KIM_NO, B.VERGI_NO)条件正在与我的完整的查询,但我想这种情况将工作只有一列(YAZ_ADRES),因为A.ID并不拥有所有B.TC_KIM_NO或全部B.VERGI_NO

我的查询应该得到12730行,如计数为PROSPECT_MASTER表。但是我只想为YAZ_ADRES列运行A.ID IN (B.TC_KIM_NO, B.VERGI_NO)条件。

我该怎么做?

+0

WHERE A.ID IN(B.TC_KIM_NO)或A.ID IN(B.VERGI_NO) –

+0

@Preet僧 - 不是一个'中(B,C)'相当于一个'中的(b )或in(c)'。在我看来,'(a,b,c)或b为空或c为空是更合适的。 –

回答

2

这听起来像我想你需要的是外连接?

SELECT a.ID, a.TURQ_ID, a.UNVAN, a.TIP, a.AKTOR, 
     a.GSM_ALAN, a.GSM_TEL, a.IS_ALAN, a.IS_TEL, 
     a.IS_EXT, a.EV_ALAN, a.EV_TEL, a.ADRES, 
     a.STF_KONTAK, 
     (CASE WHEN A.YAZ_ADRES IS NULL 
     THEN (B.IS_ADRES1 +' '+B.IS_ADRES2) 
     ELSE A.YAZ_ADRES END) 
     COLLATE DATABASE_DEFAULT AS YAZ_ADRES , A.SEHIR, A.PS, A.MEMO 
FROM PROSPECT_MASTER A 
LEFT OUTER JOIN YAZ..MARDATA.S_MUSTERI B 
ON A.ID IN (B.TC_KIM_NO, B.VERGI_NO) // Result 12730 rows 
+0

它的作品,但这个查询得到12733行。这不奇怪吗? –

+2

这表明在少数情况下,有多个B记录与A记录匹配。 –