Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Счётчик в запросе (число прочтений - 6936 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Счётчик в запросе
22. Ноября 2006 :: 13:05
Печать  
Помню, что такая тема была, но, к сожалению, не нашёл.
Как в запросе сделать счётчик, который просто выводил бы номер текщей записи в выборке?

Я так понимаю надо COUNT(*) использовать, но он мне ругается, что у меня нет Group BY ( у меня его действительно нету)
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #1 - 22. Ноября 2006 :: 13:54
Печать  
Ну помогите тупому, плохо шарящему в t-sql
ТекстЗапроса = "
"SELECT КАКАЯ_ТО_ФУНКЦИЯ as Сч, name as Имя
FROM titles"
Скажите, пжлст, как называется эта "КАКАЯ_ТО_ФУНКЦИЯ"?
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #2 - 22. Ноября 2006 :: 14:03
Печать  
Нет такой функции. На клиенте записи считай.
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #3 - 22. Ноября 2006 :: 14:05
Печать  
DmitrO писал(а) 22. Ноября 2006 :: 14:03:
Нет такой функции. На клиенте записи считай.

А если я в ТП сразу вывожу? Как быть?
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #4 - 22. Ноября 2006 :: 14:14
Печать  
В ТП никак не получится.

Если надо получить такую таблицу на сервере, то можно примерно так:
Код
Выбрать все
select
0 as Number,
descr
into #tmp
from sc12
order by descr

declare @n int
set @n = 0

update #tmp
set @n = Number = @n + 1

select * from #tmp

drop table #tmp
 

  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #5 - 22. Ноября 2006 :: 14:21
Печать  
Или тащи все в ТЗ и в ТП отображай ТЗ, обрабатывая событие ПриВыводеСтроки отображай ТЗ.НомерСтроки.
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Счётчик в запросе
Ответ #6 - 22. Ноября 2006 :: 14:25
Печать  
DmitrO писал(а) 22. Ноября 2006 :: 14:03:
Нет такой функции. На клиенте записи считай.

Я, кстати, такие штуки запросто на sql 6.5 проделывал
Типа select @i = @i +1, * from _1sjourn - как то так.

Но на 7.0 или на 2000 празник закончился
  

De quelle planète es-tu?
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #7 - 22. Ноября 2006 :: 14:33
Печать  
Да, грустно сразу как-то стало...
DmitrO писал(а) 22. Ноября 2006 :: 14:21:
Или тащи все в ТЗ и в ТП отображай ТЗ, обрабатывая событие ПриВыводеСтроки отображай ТЗ.НомерСтроки.

Спасибо за совет, но для меня - совсем не вариант: слишком много данных.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #8 - 22. Ноября 2006 :: 14:34
Печать  
kms писал(а) 22. Ноября 2006 :: 14:25:
DmitrO писал(а) 22. Ноября 2006 :: 14:03:
Нет такой функции. На клиенте записи считай.

Я, кстати, такие штуки запросто на sql 6.5 проделывал
Типа select @i = @i +1, * from _1sjourn - как то так.

Но на 7.0 или на 2000 празник закончился

Даже в этом случае, будет отображаться не то (не номер записи во всей отображаемой в ТП выборке), т.к. поставщик данных получает данные частями, будет номер записи в этой получаемой части.
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #9 - 22. Ноября 2006 :: 14:36
Печать  
JohnyDeath писал(а) 22. Ноября 2006 :: 14:33:
Да, грустно сразу как-то стало...
DmitrO писал(а) 22. Ноября 2006 :: 14:21:
Или тащи все в ТЗ и в ТП отображай ТЗ, обрабатывая событие ПриВыводеСтроки отображай ТЗ.НомерСтроки.

Спасибо за совет, но для меня - совсем не вариант: слишком много данных.

Хм, дак чтобы пронумеровать записи, придется все равно перебрать их все..
Как ты себе представляешь отображение конца такой выборки? Как узнать сколько записей было выше?

Возможно тогда нужно хранить номер?
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Счётчик в запросе
Ответ #10 - 22. Ноября 2006 :: 14:41
Печать  
DmitrO писал(а) 22. Ноября 2006 :: 14:34:
Даже в этом случае, будет отображаться не то (не номер записи во всей отображаемой в ТП выборке), т.к. поставщик данных получает данные частями, будет номер записи в этой получаемой части.

Да это понятно, я о том, как прекрасно было наше прошлое, которое мы потеряли
Ну могу я себе позволить небольшую ретроспекцию, а? Подмигивание
  

De quelle planète es-tu?
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #11 - 22. Ноября 2006 :: 15:10
Печать  
kms писал(а) 22. Ноября 2006 :: 14:25:
DmitrO писал(а) 22. Ноября 2006 :: 14:03:
Нет такой функции. На клиенте записи считай.

Я, кстати, такие штуки запросто на sql 6.5 проделывал
Типа select @i = @i +1, * from _1sjourn - как то так.

Но на 7.0 или на 2000 празник закончился

Ну конкретно для _1sjourn можно так:
Код
Выбрать все
select
    (select count(*) from _1sjourn jr1 where (jr1.date_time_iddoc > '20061101') and (jr1.date_time_iddoc <= j.date_time_iddoc)), *
from _1sjourn j
where j.date_time_iddoc > '20061101' and j.date_time_iddoc < '20061101Z'
order by j.date_time_iddoc 

А в общем случае я бы использовал вариант DmitrO или временную таблицу с identity.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #12 - 22. Ноября 2006 :: 15:14
Печать  
А, кстати, такой вопрос:
Что оптимальнее использовать временную таблицу или переменную типа table?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #13 - 22. Ноября 2006 :: 15:50
Печать  
Хотя BOL рекомендует "Use table variables instead of temporary tables, whenever possible", на sql.ru периодически возникают дебаты по этому поводу. Однозначной рекомендации нет.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Счётчик в запросе
Ответ #14 - 22. Ноября 2006 :: 19:01
Печать  
JohnyDeath писал(а) 22. Ноября 2006 :: 13:05:
Помню, что такая тема была, но, к сожалению, не нашёл.
Как в запросе сделать счётчик, который просто выводил бы номер текщей записи в выборке?

Я так понимаю надо COUNT(*) использовать, но он мне ругается, что у меня нет Group BY ( у меня его действительно нету)



все достаточно коряво.
вот примеры нумерации строк выборки http://www.sql.ru/faq/faq_topic.aspx?fid=126
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать