查看2个表和2个记录

时间:2012-10-31 16:10:25

标签: sql oracle

我有一个SOME_ABLE表,其中包含SOME_ID列。 我也有表ANOTHER_TABLE,列SOME_TABLE_SOME_ID(FOREIGN KEY),TYPE,CONTENT

对于SOME_TABLE中的一条记录,ANOTHER_TABLE中有1或2条记录。

我希望看到以下内容:

SOME_ID, CONTENT_TYPE_A, CONTENT_TYPE_B

我有sql语句:

SELECT
ST.SOME_ID,
TYPE_A.CONTENT CONTENT_TYPE_A, 
TYPE_B.CONTENT CONTENT_TYPE_B
FROM SOME_TABLE ST
LEFT OUTER JOIN ANOTHER_TABLE TYPE_A
ON ST.SOME_ID=TYPE_A.SOME_TABLE_SOME_ID 
LEFT OUTER JOIN ANOTHER_TABLE TYPE_B
ON ST.SOME_ID=TYPE_B.SOME_TABLE_SOME_ID 
WHERE
TYPE_A.TYPE = 'A'
AND
TYPE_B.TYPE = 'B'

如果ANOTHER_TABLE中的两个记录都存在(TYPE ='A'和TYPE ='B'),则此查询仅返回SOME_TABLE的结果。

如何查看对应的SOME_TABLE记录何时只存在ANOTHER_TABLE中的1条记录?

我想在现有记录时在CONTENT_TYPE_A或CONTENT_TYPE_B中设置空值。

1 个答案:

答案 0 :(得分:2)

如何使用OR代替AND

SELECT
ST.SOME_ID,
TYPE_A.CONTENT CONTENT_TYPE_A, 
TYPE_B.CONTENT CONTENT_TYPE_B
FROM SOME_TABLE ST
LEFT OUTER JOIN ANOTHER_TABLE TYPE_A
ON ST.SOME_ID=TYPE_A.SOME_TABLE_SOME_ID 
LEFT OUTER JOIN ANOTHER_TABLE TYPE_B
ON ST.SOME_ID=TYPE_B.SOME_TABLE_SOME_ID 
WHERE
TYPE_A.TYPE = 'A'
OR
TYPE_B.TYPE = 'B'