长话短说
  有一个主表A,两个从表B和C,B和C与A存在相同的主表键关联,我想通过一个视图查询出我所要的三个表中的所有信息,示例如下:
  A
  A_ID(主键)   A_CODE    A_NAME
  1             001        张三   B
  B_ID(主键)  A_ID(外键) B_CODE   B_NAME
   1            1         001     王五  C
  C_ID(主键)  A_ID(外键)  C_CODE  C_NAME
   1            1         001     李四
    2            1         002     赵六 我想知道能不能通过一个视图查询出B中有一条关联记录和C中有两条关联记录,现在我建的视图查询出来的B有两条重复的记录,相当于B和C做了称得上笛卡尔积
 请高手赐教!

解决方案 »

  1.   

    一个视图包含A,B,C的内容,当然是2条了B的a_id(值为1)对应C的a_id(值为1),join起来不就是2条?
      

  2.   

     把 你的SQL贴出来看看
      

  3.   

    try it:select B_CODE,C_CODE,count(c_id) from b,c where b.b_code=c.c_code and b.a_id=c.a_id  
           order by b_code,c_code
           group by b_code,c_code
           having count(c_id)=2;
      

  4.   

    SELECT * FROM A,B,C where A.A_ID=B.A_ID and A.A_ID=C.A_ID这样查出来的结果
      A_ID B_CODE B_NAME C_CODE   C_NAME
      1     001    王五    001      李四
       1    001     王五    002     赵六
     B的记录重复了
      

  5.   

    SELECT A.A_ID,distinct B_CODE,B_NAME,C_CODE,C_NAME  FROM A,B,C where A.A_ID=B.A_ID and A.A_ID=C.A_ID;
     
      

  6.   

    create or replace view v_abc as
    select a_id,a_id,a_code,a_name from tab_a
    union all
    select b_id,a_id,b_code,b_name from tab_a a,tab_b b where a.a_id(+)=b.b_id
    union all
    select c_id,a_id,c_code,c_name from tab_a a,tab_c c where a.a_id(+)=c.c_id
      

  7.   

    楼主的意思好像是要先 Union B 和 C,把没有主外键关系的 B 表和 C 表的记录合并没有任何意义。
      

  8.   

    这不能算是“重复”。符合条件的记录当然会被SELECT出来。如果LZ能把想要的结果也贴出来,这样解决问题会更快一点。
      

  9.   

    这样说吧,我就是想根据主表ID来查出B表与A表关联的一条数据和C表中关联的两条数据
      

  10.   

    這是一個很簡單的SQL啊
    這樣寫就可以啊:

    SELECT c.* FROM c
    WHERE c.a_id IN (SELECT b.a_id FROM b,a WHERE a.a_id = c.a_id)

      

  11.   

    創建視圖:
    CREATE VIEW abc_view
    AS
    SELECT c.* FROM c
    WHERE c.a_id IN (SELECT b.a_id FROM b,a WHERE a.a_id = c.a_id)