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

Откуда:
Сообщений: 65
Есть 4 таблицы.
таблица A.
таблица B, в которой записи имеют поле A_ID (из таблицы А)
таблица С, в которой записи имеют поле B_ID (из таблицы С) и D_ID из таблицы D
таблица D.
Для удобства нарисовал картинку со связями таблиц

Как, зная A_ID, получить кол-во уникальных D_ID, используемых им?

Если делать вот так, то мы вернем столбец значений с кол-вом уникальных D_ID для каждого B_ID:
SELECT (SELECT COUNT(DISTINCT D_ID)
	FROM C 
	WHERE C.B_ID = B.B_ID)
FROM B
WHERE A_ID=1


а вот как сначала собрать все D_ID для каждого B_ID, а потом уже сделать COUNT + DISTINCT - догадаться никак не могу.
27 ноя 12, 11:41    [13534877]     Ответить | Цитировать Сообщить модератору
 Re: SELECT множества значений  [new]
eXeLe
Member

Откуда:
Сообщений: 65
из-за ошибки форума, страница обновилась, файлик в ататче пропал

К сообщению приложен файл. Размер - 11Kb
27 ноя 12, 11:41    [13534883]     Ответить | Цитировать Сообщить модератору
 Re: SELECT множества значений  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
eXeLe,
select
B.D_ID
count(distinct C.D_ID)
from b
inner join C on C.B_ID = B.B_ID
where B.A_ID =1
group by B.D_ID
27 ноя 12, 11:51    [13534962]     Ответить | Цитировать Сообщить модератору
 Re: SELECT множества значений  [new]
eXeLe
Member

Откуда:
Сообщений: 65
Мистер Хенки,

а как мы делаем
B.D_ID
count(distinct C.D_ID)
from b

когда в B у нас нет D_ID?
27 ноя 12, 12:31    [13535364]     Ответить | Цитировать Сообщить модератору
 Re: SELECT множества значений  [new]
eXeLe
Member

Откуда:
Сообщений: 65
да, туплю, из-за джойнов же...
поменял SELECT просто на count(distinct D_ID)
и убрал GROUP_BY - вроде работает
27 ноя 12, 12:35    [13535401]     Ответить | Цитировать Сообщить модератору
 Re: SELECT множества значений  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
eXeLe
Мистер Хенки,

а как мы делаем
B.D_ID
count(distinct C.D_ID)
from b

когда в B у нас нет D_ID?

значит описка вместо B.D_ID поставить В.B_ID
27 ноя 12, 12:36    [13535402]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить