select aid from atb1,btb1
where instr(aid,bid)>0

解决方案 »

  1.   

    to jiezhi:
    谢谢,这样查询的结果记录会变多啊
      

  2.   

    实际上,我的情况是这样的:RouteTbl 
    beginnodeid  起始节点(NodeTbl中NodeID,形如101)  
    route        途经节点(形如102,103,104)
    endnodeid    终止节点(NodeTbl中NodeID,形如105)NodeTbl
    NodeID
    Name我现在想要的是查询途经某节点“A”(节点名称包含字符A)(包括起始节点、终止节点)的所有路由
      

  3.   

    那你还需要加条件进行限定。否则,aid和bid不好对应
      

  4.   

    如果能把route中的节点编号都分离成为记录就好办多了。
      

  5.   

    是啊,但是现在表结构就是这样的,没法变啊
    不懂有没有什么函数能表示
    形如:
    (101,109) in (101,102,103)
    左边只要有一个ID在右边列表中就为真的函数
      

  6.   

    select aid from atb1 a where exists (select * from btb1 b where b.bid=a.aid)
    你试试 用的是相关查询,我没有调试 但是 我想用相关查询一定可以实现的
      

  7.   

    to 楼上:
    但是a.aid 和b.aid并不相等。
      

  8.   

    谢谢大家的回复!我现在暂时是用下面语句实现的select distinct a.* from routetbl a,nodetbl b where instr(a.beginnodeid||chr(44)||a.route||chr(44)||a.endnodeid,b.nodeid)>0 and b.name like '%输入的名称%';不知道还有没有其他方法?
      

  9.   

    应该ROUTEB1是路由表,包含多个节点,
    而NODETB1是节点表,每个记录只包含单独一个节点吧。这样就简单多了。