Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как добавить счетчик (автоинкремент) в запрос

23K
09 июля 2008 года
Gluckodrom
30 / / 08.01.2008
Как добавить счетчик строк (автоинкремент) в запрос. Юзал поиск по форуму, где-то видел, но найти, к сожалению, не смог.
Не поленитесь, пожалуйста, помогите...
 
Код:
select N_tel, Fio_naim, Adress_fakt from base_main where status=:status and raion=:raion order by N_tel
332
09 июля 2008 года
Valiant
416 / / 27.09.2004
Ох... Уважаемый, сколько же писать о том что нужно дать более полную информацию.

Какую БД Вы используете???

в запрос типа select никак

Вот здесь по transact-SQL

В MySQL есть параметр AUTO_INCREMENT.

если конкретнее то вот
 
Код:
ALTER TABLE table_name ADD Column_name Int IDENTITY(1,1) NOT NULL


Обсуждалось здесь
23K
10 июля 2008 года
Gluckodrom
30 / / 08.01.2008
Извините, забыл. FireBird 2.0.
Где-то на этом форуме видел, вроде Охотник333 приводил пример, но найти, к сожалению, не могу =(

Вот два примера. Но прикрутить к себе пока не хватает мозгов.
Код:
1) через подзапрос во фразе SELECT:

select (
select count(1)
from t t2
where t1.name >= t2.name
) as rn,
name,
age
from t t1


2) через селф-джойн и группировку:

select count(1) as rn,
t1.name,
t1.age
from t t1
join t t2
on t1.name >= t2.name
group by t1.name, t1.age
332
10 июля 2008 года
Valiant
416 / / 27.09.2004
если у вас не существует счётчика, то запросом типа select вы его не создадите.
Для этих целей существует запрос ALTER TABLE (о конструкции написано выше)

Функция count() Calculates the number of rows that satisfy a query’s search condition. Available in SQL,DSQL, and isql. Это немного не то что Вы хотите...

Это ссылка на документацию
Это ссылка на FAQ с ответом на ваш вопрос, хотя на мой взгляд как то коряво. Использование тригера для автовычисляемых полей это не выход
23K
10 июля 2008 года
Gluckodrom
30 / / 08.01.2008
Ну хорошо. убедили. =)
Спасибо за ответы.
8.2K
10 июля 2008 года
Ora-cool
211 / / 20.09.2007
Мне кажется здесь возникло непонимание нужд автора. Насколько я понял речь не идет об автоинкрементном поле в таблице, а идет о нумерации строк в выборке. Т.е. генераторы тут не при чем.
Вариантов вижу несколько:
1. Использовать хранимую процедуру, и делать выборку из нее.
2. Исользовать запросы, которые вы привели, если их можно модифицировать под ваши нужды. Но ИМХО, самообъединение таблиц для получения номера строки не самый быстродейственный вариант.
3. Нумеровать строки непосредственно в клиентском приложении.

P.S. Не в курсе последних версии FireBird, может там наконец появилась конструкция по аналогии с rownum в Оракле.
2
10 июля 2008 года
squirL
5.6K / / 13.08.2003
Код:
mysql> set @var:=0;
Query OK, 0 rows affected (0.00 sec)

mysql> select @var:=@var+1, name from TableA;
+--------------+------+
| @var:=@var+1 | name |
+--------------+------+
|            1 | a    |
|            2 | b    |
|            3 | c    |
|            4 | d    |
+--------------+------+

оно?
8.2K
10 июля 2008 года
Ora-cool
211 / / 20.09.2007
Цитата: squirL
Код:
mysql> set @var:=0;
Query OK, 0 rows affected (0.00 sec)

mysql> select @var:=@var+1, name from TableA;
+--------------+------+
| @var:=@var+1 | name |
+--------------+------+
|            1 | a    |
|            2 | b    |
|            3 | c    |
|            4 | d    |
+--------------+------+

оно?


)))
А теперь тоже самое на FireBird'е ))

2
10 июля 2008 года
squirL
5.6K / / 13.08.2003
Цитата: Ora-cool
)))
А теперь тоже самое на FireBird'е ))



эм.... пропустил, что речь о Firebird. вот что значит - не соблюдать правил и не писать базу в топике/вопросе :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог