2017-03-16 9 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)) 

Exemple: 人Aが1つのグループにし、グループ75588 人Bは、twogroupsにAを返さなければ選択だけの人でグループ75588と2443

です。

しかし、それは動作しない、それはすべての値を持っています。

答えて

1

次の例のperson_idを、個人を識別する列に置き換えます。次のように変更してください

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

  • 使用しないが、人との間の参照をマッピングするための主要なフィールドのような2443
  • 使用する一意のフィールドのレコードの選択を停止するEXISTS not exists()を使用して

    グループテーブル。

あなたのクエリは次のようにする必要があります

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 
) 
関連する問題