三个表之间的关联

chidashi 2007-05-25 10:59:31
在pb7下

三个表
表1 表2 表3
name port port
item id portname
id

我要查找表1的name、item 和表3中的portname

关联关系是 通过表1的id在表2中找到port 再通过 port找到 表3的portname
并且是需要用左或右关联,即使表1的id是NULL 表3的portname也要显示

我写的是
SELECT 表1.name,
表1.item,
表3.portname
FROM 表3 right join 表2
on 表3.port = 表2.port right join 表1
on 表2.id = 表1.id

我用sql server 的查询分析器 就可以查询
但是放到数据窗口的sql里就不可以。
这是为什么?
...全文
136 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chidashi 2007-05-25
  • 打赏
  • 举报
回复
表1在数据库A中 表2、3在数据库B中
无法在图形界面进行操作
所以我在找寻语句的写法
smaworm 2007-05-25
  • 打赏
  • 举报
回复
先仔细检查方到数据窗口的语句是否有错误,
SELECT 表1.name,
表1.item,
表3.portname
FROM 表1,表2,表3
where 表3.port = 表2.port and
表2.id *= 表1.id
AFIC 2007-05-25
  • 打赏
  • 举报
回复
打开数据创,在图形界面下选那个join
兼容性更高
chidashi 2007-05-25
  • 打赏
  • 举报
回复
我把我pb7升级到7.03就可以了 嘿嘿
以下是升级包地址
http://www.pdriver.com/display.asp?key_id=1415
jimlydukai 2007-05-25
  • 打赏
  • 举报
回复
SELECT
IsNull((SELECT name FROM 表1 WHERE id=(SELECT id FROM 表2 WHERE port=表3.port)),0) AS name,

IsNull((SELECT item FROM 表1 WHERE id=(SELECT id FROM 表2 WHERE port=表3.port)),0) AS item,

portname

FROM 表3
用这个方法试试!

609

社区成员

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

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