SQL Server жесткий запрос - PullRequest
       0

SQL Server жесткий запрос

4 голосов
/ 04 ноября 2011

У меня проблема с написанием сложного запроса. У меня есть следующая таблица (в качестве примера)

fusionId | productId | departmentId
    1    |     1     |       1
    2    |     1     |       2
    3    |     2     |       1
    4    |     3     |       2

Я хочу запрос, который я могу передать двум departmentId в (1,2), и запрос вернет productId, только если оба departmentId совпадают с productId

Так, например, если я отправлю departmentId 1 & 2, я получу результат

productId
    1

Возможно ли это?

Ответы [ 3 ]

11 голосов
/ 04 ноября 2011
SELECT productId 
FROM YourTable
WHERE departmentId IN (1,2)
GROUP BY productId 
HAVING COUNT(DISTINCT departmentId) = 2

Или

SELECT productId 
FROM YourTable
WHERE departmentId = 1
INTERSECT
SELECT productId 
FROM YourTable
WHERE departmentId = 2
0 голосов
/ 15 октября 2014
SELECT productId 
FROM YourTable
WHERE departmentId IN (1,2)
GROUP bY productId 
HAVING COUNT(productId) > 1
0 голосов
/ 08 января 2014
Create Table Temporary 
(
    fusionId  int,
    productId  int,
    departmentId int,
)

insert into Temporary values (1,1,1),(2,1,2),(3,2,1),(4,3,2)

Select productId  from Temporary 
Where productId in (Select productId from Temporary where departmentId = 1) and departmentId =2
...