2010-07-22 61 views
1
Table1 
F1 F2 F3 F4 
ab1 bc1 de1 5 
ab2 bc2 de2 6 
ab3 bc3 de3 0 

Table2 
F21 F22 F23 
5 five d 
6 six e 

Table3 
f31 
ab1 
ab2 
ab3 


select a.f1 a.f2 b.f22 from Table1 as a Table2 as b Table3 as c 
where a.f1 = c.f31 and a.f4 = b.f21 

我要寻找的结果左连接是解决方案吗?

AB1 BC1 5

AB2 BC2性

AB3 BC3 “”

我不知道该怎么问这个。但我的问题是,如果a.f4 = b.f21不matcheed,这意味着

0是不是在表3中,但仍然我想结果与空值..如何实现这一目标?

+0

使用LEFT JOIN。 http://hashmysql.org/index.php?title=Introduction_to_Joins – Naktibalda 2010-07-22 16:24:10

回答

1

正如评论中所述,您应该使用LEFT JOIN。这确实需要重写一下你的查询。

LEFT OUTER JOIN - 基于联接子句中指定的两个 表, 所有数据都从左边 表中返回。在右表中, 匹配数据另外还返回 到NULL值,其中在左表中存在 ,但在 右表中存在 。 要留意的另一项内容是LORT和RIGHT OUTER JOIN逻辑是彼此相反的。 因此,您可以更改 特定连接 语句中的表格顺序或将JOIN从左侧的 更改为右侧或反之亦然并获得 相同的结果。

SELECT a.f1 a.f2 b.f22 
    FROM Table1 as a 
      LEFT OUTER JOIN Table2 as b ON a.f4 = b.f21 
      LEFT OUTER JOIN Table3 as c ON c.f31 = a.f1