LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1169|回复: 6

关于三个表的左连接

[复制链接]
发表于 2003-12-7 12:32:10 | 显示全部楼层 |阅读模式
我有三个表,t1{a}、t2{a,b}、t3{b,c}
现在我要SELECT t3.c,如何写这个左连接?
如果是t2.b我这样写:
SELECT t2.b FROM t1 LEFT JOIN t2 ON (t1.a=t2.a)

可是SELECT t3.c FROM t1 LEFT JOIN t2 ON (t1.a=t2.a) LEFT JOIN t3 ON(t2.b=t3.b)对吗?应该怎样写?

多谢!!!
发表于 2003-12-8 18:59:25 | 显示全部楼层
兄弟你的意思,说得不是太明白。
你现在是要查询t3.c这个列是吗?然后条件是:t1.a = t2.a 和 t2.b = t3.b是这样,对吗?

不知道你使用的是什么系统:
在PostgreSQL中
select t3.c from t3 left jion t2 on t3.b = t2.b where t2.b in (select t2.b from t2 left join t1 on t1.a = t2.a)
 楼主| 发表于 2003-12-8 20:44:57 | 显示全部楼层
我用的是MySQL
发表于 2003-12-9 08:29:53 | 显示全部楼层
不知道这个能不能得到你所要的结果:

select distinct c from t3 left join t2 on t2.b = t3.b left join t1 on t2.a = t1.a;
发表于 2003-12-9 08:30:42 | 显示全部楼层
21 rows in set (0.00 sec)

mysql> select distinct c from t3 left join t2 on t2.b = t3.b left join t1 on t2.a = t1.a;
+------+
| c    |
+------+
|   10 |
|   11 |
|   21 |
+------+
3 rows in set (0.00 sec)

mysql>


这是我的输出结果
像这种情况能够做好表设计就最好了。
 楼主| 发表于 2003-12-9 20:44:06 | 显示全部楼层
我用我的那句似乎得到了正确的结果,我不知应如何验证。
发表于 2003-12-10 16:01:40 | 显示全部楼层
可是SELECT t3.c FROM t1 LEFT JOIN t2 ON (t1.a=t2.a) LEFT JOIN t3 ON(t2.b=t3.b)对吗?应该怎样写?


自己建好数据库表,输入数据库试一下就知道了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表