关于Oracle多表查询

zhaohetian 2012-02-10 12:37:52
select l.linkid,n.nodename,n.nodename from links l,nodes n where l.enternodeid=n.nodeid and l.exitnodeid=n.nodeid and l.linkid=1


这个SQL语句查询的时候不报错,也不现实数据
还有就是l.enternodeid=n.nodeid and l.exitnodeid=n.nodeid 是这样的 两个字段要根据一个字段查询不同的数据
例如:表1 enternodeid exitnodeid 表2 nodeid nodename
1 2 1 未央路立交
3 2 2 太白路立交
3 含光路
怎么办?
...全文
165 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkman_22 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cybloveqcl 的回复:]
引用 8 楼 merrill 的回复:
select l.linkid, n.nodename, m.nodename
from links l, nodes n, nodes m
where l.enternodeid = n.nodeid
and l.exitnodeid = m.nodeid
and l.linkid = 1


小弟请教一下 为什么 同一个表 用两个别名啊?……
[/Quote]
不用两个别名,如何获取两个nodename?系统肯定会报错了。
cybloveqcl 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 merrill 的回复:]
select l.linkid, n.nodename, m.nodename
from links l, nodes n, nodes m
where l.enternodeid = n.nodeid
and l.exitnodeid = m.nodeid
and l.linkid = 1
[/Quote]

小弟请教一下 为什么 同一个表 用两个别名啊?
zhaohetian 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xpingping 的回复:]

试试吧……
SQL code
select linkid,
(select max(nodename)from nodes n where l.enternodeid = n.nodeid),--起始路段名称
(select max(nodename)from nodes n where l.exitnodeid = n.nodeid)--终止路段名称
from links l
[/Quote]
[Quote=引用 7 楼 merrill 的回复:]
select l.linkid, n.nodename, m.nodename
from links l, nodes n, nodes m
where l.enternodeid = n.nodeid
and l.exitnodeid = m.nodeid
and l.linkid = 1
[/Quote]


谢谢两位,你们的都很正确
buryMyLove 2012-02-10
  • 打赏
  • 举报
回复
LZ得去补补sql基础……

and的意思是且, 比如说对于n.nodeid=1的一条记录,只有l.enternodeid和l.exitnodeid都等于1的情况下才会关联出来

LZ的需求木有表述清楚,你要查出什么样的数据啊?
merrill 2012-02-10
  • 打赏
  • 举报
回复
select l.linkid, n.nodename, m.nodename
from links l, nodes n, nodes m
where l.enternodeid = n.nodeid
and l.exitnodeid = m.nodeid
and l.linkid = 1
xpingping 2012-02-10
  • 打赏
  • 举报
回复
试试吧……
select linkid,
(select max(nodename)from nodes n where l.enternodeid = n.nodeid),--起始路段名称
(select max(nodename)from nodes n where l.exitnodeid = n.nodeid)--终止路段名称
from links l
zhaohetian 2012-02-10
  • 打赏
  • 举报
回复
表1:links
(
linkid 编号
enternodeid 起始路段编号
exitnodeid 终止路段标号
)
表2:nodes
(
nodeid 路段编号
nodename 路段名称
)
enternodeid、exitnodeid的编号和nodeid的编号有关
根据linkid查询 起始路段名称,终止路段名称

zhaohetian 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mailking 的回复:]

从你给的例子看,你要的结果应该这样改
l.enternodeid=n.nodeid and l.exitnodeid=n.nodeid
改成
l.enternodeid=n.nodeid or l.exitnodeid=n.nodeid
[/Quote]

好像不对啊,给成上面写的那样,就会把所有的信息显示出来了,我只显示linkid=1的数据
我心飞翔 2012-02-10
  • 打赏
  • 举报
回复
把用的表结构重新描述一下
表名
(
列1 --说明
列2 --说明
...
)
最终要查询什么?
zhaohetian 2012-02-10
  • 打赏
  • 举报
回复
例如:表1 enternodeid exitnodeid 表2 nodeid nodename
1 2 1 未央路立交
3 2 2 太白路立交
3 含光路
mailking 2012-02-10
  • 打赏
  • 举报
回复
从你给的例子看,你要的结果应该这样改
l.enternodeid=n.nodeid and l.exitnodeid=n.nodeid
改成
l.enternodeid=n.nodeid or l.exitnodeid=n.nodeid
benluobo 2012-02-10
  • 打赏
  • 举报
回复
这格式 没太看懂 你的表最好不要写在一起 分开表达好一点

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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