none
行数不定的两表查询 RRS feed

  • 问题

  • 有表A(字段 pk,fk, a1,a2,a3),表B(pk,fk,b1,b2,b3),表C(fk)

    表C为主表,AB与C都是一对多。AB的数量不一定,AB之间没有主外键关系。

    要查出 FK='TEST' 时 表A和B的所有字段,


    提问题真爽
    2010年12月22日 0:43

答案

  • 如果你要查的和C没有关系, 可以 select  * from A full join B on A.fk=B.fk where (A.fk='TEST' or B.fk='TEST').


    This posting is provided "AS IS" with no warranties, and confers no rights.
    2010年12月22日 2:08

全部回复

  • 表A和B的所有字段

    应该是所有记录吧?

    select * from a where pk=test

    union all

    select * from b where pk=test

    这样可以么?

    估计不是你要的,建议你吧需要的结果集具体举例说明一下。


    family as water
    2010年12月22日 2:06
  • 如果你要查的和C没有关系, 可以 select  * from A full join B on A.fk=B.fk where (A.fk='TEST' or B.fk='TEST').


    This posting is provided "AS IS" with no warranties, and confers no rights.
    2010年12月22日 2:08
  • 如果A/B表的字段類型沒有衝突時可用union

     

    select 'A' as TabName,pk,fk,a1,a2,a3 from A where fk='TEST'
    
    union all
    
    select 'B' as TabName,pk,fk,b1,b2,b3 from B where fk='TEST'
    
    --Test來自C的其它字段值時
    
    select t.*
    
    from (select 'A' as TabName,pk,fk,a1,a2,a3 from A union all select 'B' as TabName,pk,fk,b1,b2,b3 from B) t
    
    inner join C on C.fk=t.fk
    
    where c.Name='TEST'

     


    ROY WU(吳熹 )
    2010年12月22日 4:02
    版主
  • 可能是我说的不清楚,我举例说明一下吧。

    a.fk = b.fk

    比如 A表有一行FK='TEST'数据,B表没有,则查出结果为  a1.value,a2.value,a3.value,null,null,null

    反之 则结果为 null,null,null,b1.value,b2.value,b3.value

    如果都有的话,则 a1.value,a2.value,a3.value,b1.value,b2.value,b3.value

     

    问题在于 如果使用外连接的话,不能确定哪张表里有数据


    提问题真爽
    2010年12月23日 6:24
  • select *

    from a

    full join b on a.fk=b.fk

    where a.fk='TEST' or b.fk='TEST'


    既然选择了远方,便只顾风雨兼程!
    2010年12月23日 6:32
  • 可能是我说的不清楚,我举例说明一下吧。

    a.fk = b.fk

    比如 A表有一行FK='TEST'数据,B表没有,则查出结果为  a1.value,a2.value,a3.value,null,null,null

    反之 则结果为 null,null,null,b1.value,b2.value,b3.value

    如果都有的话,则 a1.value,a2.value,a3.value,b1.value,b2.value,b3.value

     

    问题在于 如果使用外连接的话,不能确定哪张表里有数据


    提问题真爽
    用2樓:Ke Yang的方法就行了full join

    ROY WU(吳熹)
    2010年12月23日 6:57
    版主