求个sql语句的写法,字段关联的。

dingyanwei 2009-07-21 10:19:07
求个sql语句的写法

表0
id n1 n2 n3
1 1 1 1
2 1 2 3
3 2 3 2

表1(关联表0的n1)
id n1 name
1 1 大
2 2 小


表2(关联表0的n2)
id n2 name
1 1 东
2 2 南
3 3 西


表3(关联表0的n3)
id n3 name
1 1 上
2 2 下
3 3 左

想要的结果

id n1 n2 n3
x 大 东 上
x 大 南 下
。。。。。。。
...全文
173 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
vinsonshen 2009-07-22
  • 打赏
  • 举报
回复
直接表联接即可:

select tb0.id as id, tb1.name as n1,tb2.name as n2,tb3.name as n3 from tb_name0 tb0, tb_name1 tb1, tb_name2 tb2, tb_name3 tb3 where tb0.n1=tb1.n1 and tb0.n2=tb2.n2 and tb0.n3=tb3.n3
c_cyd2008 2009-07-22
  • 打赏
  • 举报
回复
SELECT 表0.id AS id,表1.n1 AS n1,表2.n2 AS n2,表3.n3 AS n3 FROM ((表0 INNER JOIN 表1 ON 表0.n1=表1.n1) INNER JOIN 表2 ON 表0.n2=表2.n2) INNER JOIN 表3 ON 表0.n3=表3.n3
dingyanwei 2009-07-22
  • 打赏
  • 举报
回复
谢谢大家的帮助,基本上都能达到要求,但是哪个效率更高呢?
dingyanwei 2009-07-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jhone99 的回复:]
select a.id
    , (select name from 表1 where n1=a.n1) as n1
    , (select name from 表2 where n2=a.n2) as n2
    , (select name from 表3 where n3=a.n3) as n3
  from 表0 a
[/Quote]

access中在name为备注型时查询失败,奇怪的错误。google了下,不止我遇到,似乎除了更改语句格式外没有其他方法。
贝隆 2009-07-22
  • 打赏
  • 举报
回复
帮顶
孤独剑_LPZ 2009-07-22
  • 打赏
  • 举报
回复
不过是几个表关联问题,没有什么难度,既然正解已出,我就不罗嗦了,飘过
jhone99 2009-07-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jhone99 的回复:]
引用 6 楼 dingyanwei 的回复:
谢谢大家的帮助,基本上都能达到要求,但是哪个效率更高呢?


这几个只是写法不同,实质一回事
[/Quote]

不包括我的,lz可以试,执行每个sql看时间如何
jhone99 2009-07-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dingyanwei 的回复:]
谢谢大家的帮助,基本上都能达到要求,但是哪个效率更高呢?
[/Quote]

这几个只是写法不同,实质一回事
abc_2004 2009-07-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 alifriend 的回复:]
select a.id,b.name as n1,c.name as n2,d.name as n3 from 表0 a join 表1 b on a.n1=b.n1 join 表2 c on a.n2=c.n2 join 表3 d on a.n3=c.n3
[/Quote]
支持2楼架写法。但是数据量大时,就建议使用存储过程.
jhone99 2009-07-22
  • 打赏
  • 举报
回复
select a.id
, (select name from 表1 where n1=a.n1) as n1
, (select name from 表2 where n2=a.n2) as n2
, (select name from 表3 where n3=a.n3) as n3
from 表0 a
cqq_chen 2009-07-22
  • 打赏
  • 举报
回复
如果数据量大,则用存储过程,如果数据量小,直接用sql语句就行,2楼的写法好一些。
cqq_chen 2009-07-21
  • 打赏
  • 举报
回复
没有难度!
波导终结者 2009-07-21
  • 打赏
  • 举报
回复
select a.id,b.name as n1,c.name as n2,d.name as n3 from 表0 a join 表1 b on a.n1=b.n1 join 表2 c on a.n2=c.n2 join 表3 d on a.n3=c.n3
贝隆 2009-07-21
  • 打赏
  • 举报
回复
飘过

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧