0

在 where 子句中我有

Select B.ID,
       B.TIME_1,
       B.TIME_2,
       a.event_type,
       a.jew,
       c.dist
from B, table1 a left outer join table3 c on a.jew = c.mew
Where B.ID = A.ID
AND a.event_type in ('APPLE','ORANGE','GRAPE')

我的问题是我的查询没有显示,例如,如果某些 ID 记录不是全部 3(苹果、橙子、葡萄)。我仍然想提取所有 ID,即使它没有全部 3 个或没有苹果橙、葡萄。

示例:假设我的数据库共有 5 条记录

ID=1的事件类型为Apple, Orange,Grape也没有,但它还有其他我不关心它
ID= 2 Apple
ID= 3 Orange
ID= 4 Apple, Orange Grape
ID= 5none of 3 但其他我不关心

所以目前我的查询只是在 ID=1 的地方拉,我想修改它在哪里拉所有 5 个条件。

4

2 回答 2

1

您还需要对 table1 进行左连接,并添加一个条件以防 B 和 table1 之间不匹配:

SELECT B.ID,
       B.TIME_1,
       B.TIME_2,
       A.event_type,
       A.jew,
       C.dist
FROM B
    LEFT OUTER JOIN table1 A 
        ON B.ID = A.ID
            LEFT OUTER JOIN table3 C 
                ON A.jew = C.mew
WHERE A.event_type IS NULL
OR A.event_type in ('APPLE','ORANGE','GRAPE')
于 2013-04-19T15:22:13.790 回答
1

您需要三种事件类型中的任何一种或没有。为此,请使用左外连接,但将所有条件放在on子句中:

SELECT B.ID, B.TIME_1, B.TIME_2, A.event_type, A.jew, C.dist
FROM B left outer join
     table1 A 
     ON B.ID = A.ID and
        A.event_type in ('APPLE','ORANGE','GRAPE') LEFT OUTER JOIN
     table3 C 
     ON A.jew = C.mew
于 2013-04-19T17:42:32.650 回答