Ну не работаю я с Transact SQL
Есть три таблицы
Первая:
id Name
------------------
1 Steve
Вторая :
id Desc
----------------------
10 Horse
11 Bear
Третья :
id UserID ItemID
------------------------------
1 1 10
то есть у Стива есть horse. Как мне выбрать все остальное что НЕТ у стива, зная его id в первой таблице?
То есть результатом выборки должно быть Bear.
Правильно ли будет так
Select *
FROM Table 1
WHERE id NOT IN (SELECT ItemID FROM Table 2 WHERE UserID = 1)
??
SQL запрос
-
- Уже с Приветом
- Posts: 2013
- Joined: 16 Mar 2002 10:01
- Location: New York City
-
- Новичок
- Posts: 54
- Joined: 03 Nov 2001 10:01
- Location: California
-
- Уже с Приветом
- Posts: 664
- Joined: 05 Jun 2002 01:11
Re: SQL запрос
uniqueman wrote:Ну не работаю я с Transact SQL
Есть три таблицы
Первая:
id Name
------------------
1 Steve
Вторая :
id Desc
----------------------
10 Horse
11 Bear
Третья :
id UserID ItemID
------------------------------
1 1 10
то есть у Стива есть horse. Как мне выбрать все остальное что НЕТ у стива, зная его id в первой таблице?
То есть результатом выборки должно быть Bear.
Правильно ли будет так
Select *
FROM Table 1
WHERE id NOT IN (SELECT ItemID FROM Table 2 WHERE UserID = 1)
??
Code: Select all
select Desc1 from t2
where id not in (select itemid from t1 join t3 on t1.id=t3.userid and Name = 'Steve')
..or
select Desc1 from t2
where not exists (select 1 from t1 join t3 on t1.id=t3.userid and Name = 'Steve' where itemid = t2.id)
..or
select Desc1
from t1 join t3 on t1.id=t3.userid and name='Steve' right join t2 on t2.id=t3.itemid
where t3.itemid is null
..etc.
Rgds.