首页 新闻 搜索 专区 学院

一个sql语句的关联查询

0
悬赏园豆:40 [已解决问题] 解决于 2011-03-24 09:05

有3张表: TableA(id,name) --记录地名 代码,名称。

 如(01,北京);(02,上海);(03,广州);(04,沈阳) 

TableB(id,name) --记录国家代码,名称。

 如(01,中国);(02,美国);(03,日本);(04,英国) 

TableC(id,type) --记录中间数据(代码,类型)

 如(01,a);(02,a) ; (03,b) 其中a代表地区,b代表国家 

现在想 TableC 让实现如下效果: 

01 , a , 北京 

02 , a , 上海

 03 , b , 日本 

 

不知相关的sql语句怎么写,请各位大大不吝指教啊。。。 不知道我有没有描述清楚。

是旧卡的主页 是旧卡 | 初学一级 | 园豆:140
提问于:2010-11-13 18:31
< >
分享
最佳答案
0

select c.*,d.name
from tableC c
inner join
(
select code,name,'a' type
from tableA
union all
select code,name,'b' type
from tableB
) d
on c.code=d.code and c.type=d.type

 

其中 code:代码,name:名称,type:类型

收获园豆:40
wgz | 小虾三级 |园豆:1254 | 2010-11-14 11:52
其他回答(5)
0

没有描述清楚.

I,Robot | 园豆:9583 (大侠五级) | 2010-11-13 21:00
0

是关联查询三张表吗?

/aiq浪子飞龙 | 园豆:1189 (小虾三级) | 2010-11-13 21:43
0

提问不清,TableC的01,02,03代码跟其他表有什么关联没?最好说清楚场景会更清楚点.

三桂 | 园豆:3565 (老鸟四级) | 2010-11-13 23:16
0

说的不清楚啊

zhyongquan | 园豆:220 (菜鸟二级) | 2010-11-14 10:28
0

楼上的太复杂,一个简单的and连接就可以搞定:

select distinct tableC.id,tableC.type,tableA.name from tableA,tableB,tableC where tableC.id=tableB.id and tableC.id=tableA.id

Tester Chen | 园豆:1690 (小虾三级) | 2010-11-17 15:52
这样写有问题。这样的话第三条记录就显示为03 , b , 广州了,楼主的意思应该是地区和国家有相同的编码,第三个表中混合存储了国家和地区的信息,仅仅通过'a','b'来区分。
支持(0) 反对(0) wgz | 园豆:1254 (小虾三级) | 2010-11-22 19:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册