2013-04-04 99 views
0

我正在读取3个表中的数据SQL不包括字段ID,其中包括以下内容

ID在所有3个表格中是通用的。

这工作

select 

     T1.ID, 
     T2.CAUSE_NO, 
     T2.CAUSE_TYPE, 
     T3.START_NO, 
     T3.START_TYPE, 
     T1.Comments 
from Table1 T1, 
     Table2 T2, 
     Table3 T3 

where T2.ID = T3.ID 
    and T1.ID = T2.ID 
    AND T2.CAUSE_NO NOT IN (64,8,43,63,65) 

我还需要添加条件,我不希望包括ID where CAUSE_NO = 13 and START_NO = 83.

下面是示例表。绿色是我想要的结果,红色行不应该包括在内。 enter image description here 有人可以帮助添加此条件。

+1

从问题看来,你需要添加条件'AND(CAUSE_NO <> 13或START_NO <> 83)',但无法理解你的样表... – 2013-04-04 15:43:33

+0

我相信工作。非常感谢。在样本表中,我不想包含ID = 12,15,19,24,27,因为它包含13&83在一起。 – Mowgli 2013-04-04 15:47:41

回答

1

我想你想这where条款:

where T2.ID = T3.ID 
    and T1.ID = T2.ID 
    AND T2.CAUSE_NO NOT IN (64,8,43,63,65) 
    AND not (CAUSE_NO = 13 and START_NO = 83) 

你也应该学会使用ANSI标准联接语法。

+0

条件与AND(CAUSE_NO <> 13或START_NO <> 83)'相同吗? – Mowgli 2013-04-04 15:49:57

+0

不,我试过,它是做相反的,它只显示13&83记录。 – Mowgli 2013-04-04 15:53:03

+0

它应该是相同的,请参阅[这里](http://en.wikipedia.org/wiki/De_Morgan's_laws),你注意到'AND'之后的'not'吗? – 2013-04-04 15:55:02