Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом  [new]
=Сергей=
Member

Откуда:
Сообщений: 336
Есть таблица с данными
create table MyData
(
    [id] int identity(1,1)
   ,[SrcID] int not null --id источника данных
   ,[Par] varchar(50) --параметр
   ,[Val] varchar(500) --значение
)
insert into MyData
select 1,'Par1','Val1' union all
select 1,'Par2','Val2' union all
select 1,'Par3','Val3' union all
select 1,'Par4','Val4' union all
select 2,'Par1','Val1' union all
select 2,'Par2','Val2' union all
select 2,'Par3','Val3' union all
select 2,'Par4','Val4' union all
select 3,'Par1','Val1' union all
select 3,'Par2','Val2' union all
select 3,'Par3','Val3' union all
select 3,'Par5','Val5' union all
select 4,'Par5','Val5' union all
select 4,'Par2','Val2' union all
select 4,'Par3','Val3' union all
select 4,'Par4','Val4' union all
select 5,'Par1','Val1' union all
select 5,'Par2','Val2' union all
select 5,'Par3','Val3' union all
select 5,'Par4','Val4' union all
select 5,'Par5','Val5' union all
select 6,'Par1','Val1' union all
select 6,'Par2','Val2' union all
select 6,'Par3','Val3' union all
select 6,'Par4','Val4'

как выбрать все SrcID с такими же параметрами/значениями, как у SrcID = 1?
Для данного примера верным будет список: 1,2,6
16 май 16, 16:13    [19179642]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
=Сергей=,

Читайте про реляционное деление. Можно нагуглить массу примеров.
16 май 16, 16:19    [19179661]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
=Сергей=,

если не особо придумывать то
SELECT 
	x.SrcID
FROM MyData	x
GROUP BY 
	x.SrcID
HAVING
	COUNT(DISTINCT Par) = 
		(
			SELECT 
				COUNT(DISTINCT Par)
			FROM 
				MyData	a
			JOIN
				MyData	b
			ON
				b.SrcID = 1		AND				
				b.Par = a.Par		AND
				b.Val = a.Val
			WHERE 
				a.SrcID = x.SrcID
			GROUP BY
				a.SrcID
		)
	

а умнее читайте что умные люди говорят
16 май 16, 16:26    [19179699]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
_djХомяГ
Guest
Составной Вертикальный ключ
16 май 16, 16:29    [19179720]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить