根据sql server中的子表条件从主表中获取数据

时间:2014-04-09 11:29:32

标签: mysql sql-server

需要根据子表条件从主表中获取数据。

主表: -

ID Name Address

1   abc   xyz
2   abs   txt
3   aui   tre
4   pop   top
5   the   tre
6   pot   tos
7   pog   sop
8   pat   top
9   bat   cric
10  not   kot

子表: -

chid shootid imagename       IDFK
101   234    123ab.jpg        3
102   234    54abcab.jpg      3
103   235    123abc.jpg       3
104   236    12390acb.jpg     Null
105   235    12332aab.jpg     8
106   234    123786ab.jpg     4
107   234    54789abcab.jpg   10
108   235    122343abc.jpg    10
109   235    122123acb.jpg    4
110   234    12123aab.jpg     9
111   234    1223ab.jpg       Null
112   233    5432abcab.jpg    Null
113   235    1239abc.jpg      Null
114   236    1238acb.jpg      2
115   236    12356aab.jpg     2
116   236    1235ab.jpg       2
117   236    545abcab.jpg     Null
118   237    1233abc.jpg      1
119   237    1223acb.jpg      1
120   237    1123aab.jpg      1

在Child表中,IDFK是外键,Master表中的ID是其主键。 现在我想在主表中显示那些名称不存在于像where childtable.Shootid=234这样的shootid上的子表过滤器上的名称。我尝试了但没有找到所需的输出。每次它都会为不同的shootid返回相同的内容。

请帮助我并向我展示正确的查询。

2 个答案:

答案 0 :(得分:0)

我不知道我是否理解你,但我认为这就是你想要的,

Select * from [master] m
where m.ID not in (Select IDFK from detail where shootid=234)

答案 1 :(得分:0)

我认为这就是你要找的东西。

 Select distinct m.name from master m LEFT OUTER JOIN child c
     ON m.id = c.id and 
        c.shootid=234    
    where 
     c.id is null