SQL запрос

uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

SQL запрос

Post by uniqueman »

Ну не работаю я с Transact SQL :cry:

Есть три таблицы

Первая:

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)

??
lenkin
Новичок
Posts: 54
Joined: 03 Nov 2001 10:01
Location: California

Post by lenkin »

Если "Первая" - это Table 0, тогда правильно, если же Первая это Table 1, то в запросе увеличить номера таблиц на 1, т.е. Table 1 - на Table 2, Table 2 - на Table 3.
vc
Уже с Приветом
Posts: 664
Joined: 05 Jun 2002 01:11

Re: SQL запрос

Post by vc »

uniqueman wrote:Ну не работаю я с Transact SQL :cry:

Есть три таблицы

Первая:

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.

Return to “Вопросы и новости IT”