SQL Server 2008 Query - PullRequest
       0

SQL Server 2008 Query

1 голос
/ 30 августа 2011

У меня есть таблица, которая содержит столбцы UserId, ItemId и ItemName.Я хочу получить различные элементы для некоторых пользователей, если у этих пользователей есть все элементы, определенные для конкретного пользователя.Как я могу сделать это с сервером sql

1 Ответ

4 голосов
/ 30 августа 2011

Вы можете использовать реляционное деление, чтобы найти всех пользователей, которым принадлежат все те же элементы, что и UserId = 1. Некоторые альтернативные подходы обсуждаются здесь .Затем вы можете использовать EXCEPT для вычитания предметов пользователя 1.

SELECT  ItemId
FROM    UserItems U1
WHERE   NOT EXISTS ( SELECT *
                     FROM   UserItems U2
                     WHERE  UserId = 1
                            AND NOT EXISTS ( SELECT *
                                             FROM   UserItems U3
                                             WHERE  U1.UserId = U3.UserId
                                                    AND U2.ItemId = U3.ItemId ) )
EXCEPT
SELECT  ItemId
FROM    UserItems
WHERE   UserId = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...