2017-03-16 51 views
0

我有一個表有多個人鏈接到多個組。來自多個組的表的SQL值

我有一個程序,需要把所有人從組75588但如果這個人,如果在組2443它不能帶。 我正在嘗試這樣的事情。

SELECT * FROM BRZGRUDB08.BrinksPortal.dbo.tuxg_usuario_grupo WHERE UXG_N_USU_N_CODIGO = 302826 
AND ((UXG_N_GRP_N_CODIGO <> 2443) AND (UXG_N_GRP_N_CODIGO = 75588)) 

例: 人A在一個組,該組75588 某乙是在twogroups,集團75588和2443

在選擇只有一個人必須返回。

但它不起作用,它帶來了所有的價值。

回答

1

在以下示例中將person_id替換爲標識各個人的列。

使用not exists()

select * 
from BRZGRUDB08.BrinksPortal.dbo.tuxg_usuario_grupo as o 
where UXG_N_USU_N_CODIGO = 302826 
    and UXG_N_GRP_N_CODIGO = 75588 
    and not exists (
    select 1 
    from BRZGRUDB08.BrinksPortal.dbo.tuxg_usuario_grupo as i 
    where i.person_id = o.person_id 
     and i.UXG_N_GRP_N_CODIGO = 2443 
    ) 
+0

感謝ZIM,工作完美。 –

+0

@ViniciusCano樂意幫忙! – SqlZim

0

做以下修改:

  • 使用NOT EXISTS停止記錄,選擇了2443.
  • 使用像初級場映射人之間的參考唯一字段組表。

您查詢應該是這樣的:

SELECT * FROM BRZGRUDB08.BrinksPortal.dbo.tuxg_usuario_grupo AS A 
WHERE A.UXG_N_GRP_N_CODIGO = 75588 AND A.UXG_N_USU_N_CODIGO = 302826 
AND NOT EXISTS (
SELECT 0 FROM BRZGRUDB08.BrinksPortal.dbo.tuxg_usuario_grupo AS B 
WHERE B.UXG_N_GRP_N_CODIGO = 2443 AND B.PID = A.PID 
)