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

Откуда:
Сообщений: 99
у меня 2 таблицы: tbl_users и tbl_user_items.
В первой - список пользователей, во второй - кое-какие данные на них. tbl_users.id-->>tbl_users.user_id.

Нужно получить количество пользователей, для которых в tbl_user_items имеется более 4 записей.

Этот запрос выдает id нужных мне пользователей, а вот как просто получить их количество что-то не соображу:

SELECT DISTINCT tbl_users.id FROM tbl_users INNER JOIN tbl_user_items ON tbl_users.id=tbl_user_items.user_id
WHERE (((tbl_users.id) In (SELECT [user_id] FROM [tbl_user_items] As Tmp GROUP BY [user_id] HAVING Count(*)>4 )))
ORDER BY tbl_users.id;

Заранее спасибо!
11 авг 04, 16:46    [875071]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
funikovyuri
Member

Откуда: Симферополь
Сообщений: 4045
select count(*) from
(
SELECT DISTINCT tbl_users.id FROM tbl_users INNER JOIN tbl_user_items ON tbl_users.id=tbl_user_items.user_id
WHERE (((tbl_users.id) In (SELECT [user_id] FROM [tbl_user_items] As Tmp GROUP BY [user_id] HAVING Count(*)>4 ))) 
)

?
11 авг 04, 16:48    [875083]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Basch
Member

Откуда:
Сообщений: 99
пробовал естественно, не работает:(
11 авг 04, 16:55    [875099]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Luchkin Dmitry
Member

Откуда: Новосибирск -> Ангарск -> Братск -> Мск
Сообщений: 1921
алиас ещё допиши после скобки, чтоб вид был select count(*) from ( .... ) as mm
11 авг 04, 16:58    [875114]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Luchkin Dmitry
Member

Откуда: Новосибирск -> Ангарск -> Братск -> Мск
Сообщений: 1921
кстати, что-то не помню, чтоб не работало SELECT count(DISTINCT tbl_users.id) ....
11 авг 04, 16:59    [875116]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Basch
Member

Откуда:
Сообщений: 99
да я сразу с ним и пробовал...
просто грабли еще в том, что работаю из enterprise manager - это тот, который на asp.net, он куцый совсем, ничего не отвечает, просто если неправильный запрос, игнорирует его и всё...:(
11 авг 04, 17:02    [875125]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Fedotov Alex
Member

Откуда:
Сообщений: 167
В Вашем примере запрос эквивалентен
след. запросу


select count(*) from
(
SELECT [user_id] FROM [tbl_user_items] As Tmp GROUP BY [user_id] HAVING Count(*)>4 
) r


11 авг 04, 17:08    [875157]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Luchkin Dmitry
Member

Откуда: Новосибирск -> Ангарск -> Братск -> Мск
Сообщений: 1921
create table #tU (id int identity(1,1), name varchar(20))
create table #tI (id int, name varchar(20))

insert #tU(name) select 'Wasq' union all select 'Petya' union all select 'Gorge'
insert #tI select 1, 'some1' union all select 3, 'Mudak' union all select 3, 'kozel' union all select 3, 'down' union all select 3, 'pedofil' union all select 3, 'chmo'

select count(*) from
(
SELECT DISTINCT t1.id FROM #tU t1 INNER JOIN #tI t2 ON t1.id=t2.id
WHERE (((t1.id) In (SELECT [id] FROM [#tI] t2 GROUP BY [id] HAVING Count(*)>4 ))) 
) mm

SELECT count(DISTINCT t1.id) FROM #tU t1 INNER JOIN #tI t2 ON t1.id=t2.id
WHERE (((t1.id) In (SELECT [id] FROM [#tI] t2 GROUP BY [id] HAVING Count(*)>4 ))) 

drop table #tU
drop table #tI

оба варианта прекрасно работают...
11 авг 04, 17:13    [875173]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Luchkin Dmitry
Member

Откуда: Новосибирск -> Ангарск -> Братск -> Мск
Сообщений: 1921
и кстати да, IN не нужен.
11 авг 04, 17:16    [875183]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Basch
Member

Откуда:
Сообщений: 99
Спасибо,
насчет эквивалентного запроса - действительно, моё помутнение:)
всё работает
11 авг 04, 17:16    [875186]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить