SQL Server:非标准查询

时间:2015-03-27 06:51:43

标签: sql-server select

我有一张表dzialki_wlasciciele

id_dzialki | id_wlasc  | id_malz  |  
    1      |   1       |  2
    1      |   2       |  1
    2      |   1       |  2
    3      |   1       |  2

现在我需要两个查询 - 一个返回两行id_dzialki = 1(其中有两个id_wlasc,其中第二行的id_wlasc =第一行的id_malz < / p>

第二个查询应返回id_dzialki = 2 and = 3(其中没有第二条记录id_wlasc = id_malz

我有第二个问题:

select * 
from dzialki_wlasciciele dw1 
where dw1.ID_WLASC = 1 
  and dw1.id_dzialki not in (select dw2.id_dzialki 
                             from dzialki_wlasciciele dw2 
                             where ID_malz = 1) 

但第一个问题呢?

1 个答案:

答案 0 :(得分:0)

如果我理解正确:

DECLARE @dzialki_wlasciciele TABLE
    (
      id_dzialki INT ,
      id_wlasc INT ,
      id_malz INT
    )

INSERT  INTO @dzialki_wlasciciele
VALUES  ( 1, 1, 2 ),
        ( 1, 2, 1 ),
        ( 2, 1, 2 ),
        ( 3, 1, 2 )


SELECT  d1.*
FROM    @dzialki_wlasciciele d1
        JOIN @dzialki_wlasciciele d2 ON d2.id_dzialki = d1.id_dzialki
                                        AND d2.id_wlasc = d1.id_malz
WHERE   d1.id_dzialki = 1

输出:

id_dzialki  id_wlasc    id_malz
1           1           2
1           2           1