列m(n):表示m引用n为外键表1:t1有两列:id name
表2:t2:column1(id) ,column2(id),column3
表3:t3:column4,column5,column6表3有5行数据,依次为:
sort1     0      a
sort1     1      b
sort1     2      c
sort2     0      A
sort2     1      B其中column3是当column4=sort1的时候引用column5做的外键。问题:做一个视图,显示出来column1,column1对应的name,column2,column对应当name,column3,column3对应的column6的值
     当确保column3的范围在column5的值之内的时候, 应该视图的行数和表2的行数一样的,但是我的语句却不行:
我的语句是:
create or replace view myview 
as
select t2.*,temp.name,temp2.name,t3.column6
from t1 temp ,t1 temp2,t2,t3
where t2.column1 = temp.id
and t2.column2 = temp2.id
and t2.column3 = t3.column5
and t3.column4 = ‘sort1’我的肯定是错的,所以请高手看看这个怎么做??是用join??请不要挑剔上面语句的毛病,直接写写你的想法,谢谢。

解决方案 »

  1.   

    select t2.column1,t1.name,t2.column2,t1.name,t2.column3,t1.name
      from t1,t2,t3
      where t1.id=t2.column1
      and  t1.id=t2.column2
      and t2.column3= t3.column6
      and t2.column3 <=(t3.column5)
      

  2.   

    表1:t1有两列:id name
    表2:t2:column1(id) ,column2(id),column3 你的t2表中column1,column2怎么都和t1表的id外建关系,如果这样的话  column1=column2啊!
    你的结果集和t2的行数未必一致因为:t2,t3关联的是t2.column3 = t3.column5 ,但是还要求t3.column4='sort',这个条件会剔除部分记录的
      

  3.   

    前面有个地方没注意
    你把t1当成2张表来查的,temp temp2
    from t1 temp ,t1 temp2,t2,t3
    where t2.column1 = temp.id
    and t2.column2 = temp2.id