2012-04-09 5 views
0

私は2つのテーブルを持っており、第1のテーブルにあり、第2のテーブルにはない子IDのみを表示したいとします。しかし、それは私にIDのすべてを、常に2番目のテーブルにあるものさえ与えます。これはストアドプロシージャです。SQL文のUNION

ALTER PROC [dbo].[GetAllChildren] 

@UserID int 

AS 

SELECT Child_ID FROM firstTable 
UNION 
SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID 

どのようなアイデアですか?

答えて

2

この1

ALTER PROC [dbo].[GetAllChildren] 
@UserID int 
AS 
SELECT Child_ID 
FROM firstTable 
WHERE Child_ID NOT IN 
     (SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID) 
+0

おかげで、それが働いていた男:)適切に質問をお読みください。) –

+0

:) –

0

2番目のテーブルの子IDS

SELECT Child_ID FROM firstTable 

これは、あなたが望む結果を得るために十分であるが必要ないけない場合、なぜあなたはUNIONを使用しています。

+0

-1あなたは答えとしてマークを行う:)歓迎されている –

0
SELECT DISTINCT ft.Child_ID 
FROM firstTable ft 
LEFT JOIN secondTable st 
    on ft.Child_ID = st.Child_ID 
WHERE st.Child_ID is null 
0

変更EXCEPTからUNIONキーワード(リレーショナル差別称マイナス)などを試してみてください

SELECT Child_ID FROM firstTable 
EXCEPT 
SELECT Child_ID FROM SecondTable WHERE User_ID = @UserID