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

Откуда:
Сообщений: 49
Eсть таблица: лес, полянка, ягодка.
хотим сделать отчет, в каких лесах какие ягодки растут, т.е. получить таблицу: лес, ягодка.
но мы можем сказать что ягодка растет в лесу только если она растет на всех полянках данного леса :)
13 авг 03, 14:32    [299002]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос или функцию  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
???
select [лес], [ягодка]

from [таблица] t1
group by [лес], [ягодка]
having count([полянка])=(select count([полянка])
from [таблица] t2
where t1.[лес]=t2.[лес])
13 авг 03, 14:40    [299022]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос или функцию  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Блин забыл!...
Может так
select [лес], [ягодка]

from [таблица] t1
group by [лес], [ягодка]
having count([полянка])=(select count([полянка])
from [таблица] t2
where t1.[лес]=t2.[лес]
and t1.[ягодка]=t2.[ягодка])
13 авг 03, 14:42    [299025]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос или функцию  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2386
Блог
select [лес],[ягодка]
from [таблица] t1
where not exists (select 1 from (select distinct [полянка] from [таблица] t4
where t4.[лес] = t1.[лес]) t2 where not exists (select 1 from [таблица] t3 where t3.[ягодка] = t1.[ягодка] and
t3.[полянка] = t2.[полянка]))

Нет такой полянки в лесу, на которой данная ягодка не растёт
13 авг 03, 15:00    [299063]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос или функцию  [new]
bazaea
Member

Откуда: Бокситогорск
Сообщений: 500
если количество полянок в лесу совпадает с количеством полянок с ягодами в лесу....

SELECT *
FROM
(SELECT Forest, count(clearing) AS count_Clearing FROM table1 GROUP BY Forest) AS countCrearingInForest
INNER JOIN
(SELECT Forest,berry,count(clearing) AS count_Clearing FROM table1 GROUP BY Forest,berry) AS countCrearingWithBerryInForest
ON countCrearingWithBerryInForest.count_Clearing = countCrearingInForest.count_Clearing
AND countCrearingInForest.Forest=countCrearingWithBerryInForest.Forest
13 авг 03, 15:02    [299070]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос или функцию  [new]
Павел Воронцов
Member

Откуда: Новосибирск
Сообщений: 2386
Блог
Да! За полянками про лес забыл..

select [лес],[ягодка]
from [таблица] t1
where not exists (select 1 from (select distinct [полянка] from [таблица] t4
where t4.[лес] = t1.[лес]) t2 where not exists (select 1 from [таблица] t3 where t3.[ягодка] = t1.[ягодка] and
t3.[полянка] = t2.[полянка] and
t3.[лес] = t1.[лес]))
13 авг 03, 15:29    [299137]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать запрос или функцию  [new]
Denis Bondar
Member

Откуда:
Сообщений: 49
Спасибо большое за помощь!
13 авг 03, 15:31    [299143]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить