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

Откуда:
Сообщений: 11
Привет.

Есть подзапрос:

(select username from users)


Как можно узнать сколько записей вернул именно Подзапрос?

Что-нибудь на подобие:

select count((select username from users)) 
24 мар 12, 12:04    [12305956]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
select count (*) from (select username from users) t 
24 мар 12, 12:06    [12305959]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
chapeng
Member

Откуда:
Сообщений: 11
Просто и локанично, спасибо :)
24 мар 12, 12:33    [12306023]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
chapeng
Member

Откуда:
Сообщений: 11
Еще один небольшой вопросец.

Вот допустим этот позапрос возвращает 5 записей. Можно ли их вывести по порядку?
24 мар 12, 13:26    [12306181]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
chapeng
Вот допустим этот позапрос возвращает 5 записей. Можно ли их вывести по порядку?
order by задает нужный порядок.
24 мар 12, 14:22    [12306377]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
chapeng
Member

Откуда:
Сообщений: 11
Можно небольшой пример запроса?

select top 1 * from (select username from users) t


Выдает одну запись, а вот как затем вы вести вторую и тд.
24 мар 12, 14:53    [12306456]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
chapeng
Можно небольшой пример запроса?

select top 1 * from (select username from users) t


Выдает одну запись, а вот как затем вы вести вторую и тд.
Куда ввести, на диск?
24 мар 12, 15:20    [12306582]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
chapeng
Member

Откуда:
Сообщений: 11
Просто вывести, в SQL Management Studio например...
24 мар 12, 15:40    [12306681]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
chapeng
Просто вывести, в SQL Management Studio например...



--1 запись
select top 1 * from (select top 1 username from users order by username ) t

--2 запись
select top 1 * from (select top 2 username from users order by username ) t
order by username desc

--3 запись
select top 1 * from (select top 3 username from users order by username ) t
order by username desc

--и т.д.
24 мар 12, 16:11    [12306816]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
chapeng
Member

Откуда:
Сообщений: 11
Спасибо за отклики.
Данная конструкция мне известна, а вот если не менять этот подзапрос - (select username from users), то есть возможность извлекать одну за одной записи?
24 мар 12, 17:06    [12306995]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
invm
Member

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

Курсор что ли нужен?
24 мар 12, 17:12    [12307012]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
chapeng
Member

Откуда:
Сообщений: 11
А без курсора значит такое невозможно?
24 мар 12, 17:14    [12307020]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
chapeng
А без курсора значит такое невозможно?

Многое возможно. Есть, например, циклы. Но лучше бы вы огласили задлянафига вам это надобно, т.к. имеется подозрение, что у вас корявая постановка задачи из-за непонимания альтернативных вариантов решения задачи.
24 мар 12, 17:21    [12307040]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Может уже перестанете партизанить и опишите задачу полностью?
24 мар 12, 17:22    [12307042]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
chapeng
Member

Откуда:
Сообщений: 11
Суть состоит в том, что подзапрос "(select username from users)" статичный, менять его нельзя. Возможно ли осуществлять выборку данных без спец процедур и функций? Тут и задачи то никакой нет...

Существует строка:
select top 1 * from (select username from users) t


Сюда внедрять ничего нельзя:
(select username from users)


А все что обертывает данный позапрос менять Можно!
24 мар 12, 17:28    [12307068]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
chapeng
Спасибо за отклики.
Данная конструкция мне известна, а вот если не менять этот подзапрос - (select username from users), то есть возможность извлекать одну за одной записи?
Есть ещё способы, но нужно знать версию сервера.

До очевидного способа, как модифицировать предложенный вариант, могли бы додуматься и сами :-)

Вот тут исходный запрос не меняется:
--3 запись
select top 1 * from (select top 3 * from (select username from users) t order by username) t
order by username desc
24 мар 12, 17:30    [12307074]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
chapeng
Member

Откуда:
Сообщений: 11
Это более мне подходит спасибо.

P. S. Версия SQL 2005
24 мар 12, 17:33    [12307088]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
Хм... А чем не "проканало" классическое:

select COUNT(name ) from sysusers 

-- или 

select COUNT(distinct name ) from sysusers 

=================

А можно ещё и через обобщённые (вывести с 3-го по пятого юзера, например; если таблица достаточно статична):


;
with users as (
select distinct name, ROW_NUMBER() over (order by name) as rownum from sysusers 
)
select * from users where rownum between 3 and 5 
25 мар 12, 04:03    [12309106]     Ответить | Цитировать Сообщить модератору
 Re: Подзапрос. Кол-во записей.  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
.... извиняйте... не увидел требование к неизменности самого запроса (select users...)
25 мар 12, 04:05    [12309108]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить