Как добавить счетчик (автоинкремент) в запрос
Не поленитесь, пожалуйста, помогите...
Код:
select N_tel, Fio_naim, Adress_fakt from base_main where status=:status and raion=:raion order by N_tel
Ох... Уважаемый, сколько же писать о том что нужно дать более полную информацию.
Где-то на этом форуме видел, вроде Охотник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
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
Для этих целей существует запрос ALTER TABLE (о конструкции написано выше)
Функция count() Calculates the number of rows that satisfy a query’s search condition. Available in SQL,DSQL, and isql. Это немного не то что Вы хотите...
Это ссылка на документацию
Это ссылка на FAQ с ответом на ваш вопрос, хотя на мой взгляд как то коряво. Использование тригера для автовычисляемых полей это не выход
Спасибо за ответы.
Вариантов вижу несколько:
1. Использовать хранимую процедуру, и делать выборку из нее.
2. Исользовать запросы, которые вы привели, если их можно модифицировать под ваши нужды. Но ИМХО, самообъединение таблиц для получения номера строки не самый быстродейственный вариант.
3. Нумеровать строки непосредственно в клиентском приложении.
P.S. Не в курсе последних версии FireBird, может там наконец появилась конструкция по аналогии с rownum в Оракле.
Код:
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 |
+--------------+------+
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 |
+--------------+------+
оно?
Цитата: 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 |
+--------------+------+
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'е ))
Цитата: Ora-cool
)))
А теперь тоже самое на FireBird'е ))
А теперь тоже самое на FireBird'е ))
эм.... пропустил, что речь о Firebird. вот что значит - не соблюдать правил и не писать базу в топике/вопросе :)