[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Номер строки в БД
Гость_Наталья
Значит есть вывод из БД с определенными параметрами, чтобы дальше работать мне нужно узнать физический номер строки.
Так после вывода из огромной таблицы, допустим, отсталось 4 строки.Соответственно id у всех разные и я их даже незнаю.Мне нужно узнать физический номер каждой строки. Для чего?
Чтобы дальше допустим выводить:
1 строка выводится так-то
2 строка выводится так-то и т.д.




Спустя 28 минут, 11 секунд (12.06.2010 - 10:26) vasa_c написал(а):
У строк в БД нет физического номера.

Спустя 1 час, 41 минута, 31 секунда (12.06.2010 - 12:08) maxims написал(а):
Цитата (vasa_c @ 12.06.2010 - 07:26)
У строк в БД нет физического номера.

наверное имелось ввиду фактическое положение строки, допустим
id: 1,2,3,4,7,8,9
а фактически в бд: 1,2,3,4,5,6,7
можно средствами php и sql, как надо?
P.S.: так и не понял для чего это надо, думаю можно и без этого обойтись.......

Спустя 26 минут, 7 секунд (12.06.2010 - 12:34) FatCat написал(а):
Цитата (Гость_Наталья @ 12.06.2010 - 10:58)
физический номер строки

Он меняется по мере работы с таблицей.
Правильней будет индексировать по первичному ключу.

Спустя 11 часов, 44 минуты, 43 секунды (13.06.2010 - 00:19) Nikitian написал(а):
Я так понимаю нужно объяснить про 2 параметра sql-оператора limit.
получаем все записи из таблицы:
select * from table order by id limit 50

Знаем, что записей больше, либо узнаём это модификатором SQL_CALC_FOUND_ROWS. Записей больше, чем полученные 50, соответственно надо вывести например следующие 20. Делаем так:
select * from table order by id limit 50,20

Использование order by {какое-нибудь поле} обязательно, т.к. записи в бд располагаются в псевдослучайном порядке (теоретически в myisam последовательно в порядке добавления, но это всё теория и в дургих движках/типах таблиц может быть по-другому) и доверять этому порядку не следует.

Спустя 54 минуты, 37 секунд (13.06.2010 - 01:13) FatCat написал(а):
Цитата (Nikitian @ 13.06.2010 - 01:19)
теоретически в myisam последовательно в порядке добавления

Именно так они располагаются, если посмотреть гекс-редактором сам файл таблицы.
Но лишь до тех пор, пока не было удалений и оптимизаций.

Спустя 19 минут, 40 секунд (13.06.2010 - 01:33) Nikitian написал(а):
Цитата (FatCat @ 12.06.2010 - 22:13)
Цитата (Nikitian @ 13.06.2010 - 01:19)
теоретически в myisam последовательно в порядке добавления

Именно так они располагаются, если посмотреть гекс-редактором сам файл таблицы.
Но лишь до тех пор, пока не было удалений и оптимизаций.

Какая-то сферическая таблица в вакууме. Да, такие накопительные таблицы есть, но... Апдейт с уменьшением размера записи может вынудить оптимизаторский алгоритм работы движка распределить малую по размеру запись в освободившееся пространство в середине данных. Встречался со сбиванием порядка в больших часто обновляемых таблицах, потому и предпочитаю всегда порядок устанавливать явно.

Спустя 46 минут, 46 секунд (13.06.2010 - 02:20) dr_Lev написал(а):
можно попробовать посчитать номер строки:
set @rownum:=-1;SELECT id, name, @rownum:=@rownum+1 AS rownum FROM table;
в поле rownum будет номер с 0.

Спустя 19 часов, 41 минута, 51 секунда (13.06.2010 - 22:02) Гость_Наталья написал(а):
Цитата (dr_Lev @ 12.06.2010 - 23:20)
можно попробовать посчитать номер строки:
set @rownum:=-1;SELECT id, name, @rownum:=@rownum+1 AS rownum FROM table;
в поле rownum будет номер с 0.


Такую запись уже встречала, но никак не пойму как записывать ее с точки зрения синтаксиса.


Спустя 1 минута, 30 секунд (13.06.2010 - 22:03) Гость_Наталья написал(а):
Т.к. выборка по ORDER BY уже произошла, то все id сбились. Допустим осталось после выборки 4 записи и мне нужно узнать не номер id, а фактическое расположение в таблице, номер строки

Спустя 11 минут, 25 секунд (13.06.2010 - 22:15) twin написал(а):
Странная задача... А для чего это нужно вообще, очень любопытно?

Спустя 34 минуты, 33 секунды (13.06.2010 - 22:49) vasa_c написал(а):
Цитата
Такую запись уже встречала, но никак не пойму как записывать ее с точки зрения синтаксиса.

Я вам ещё десяток хитрож..х записей по этой теме накидаю, можете голову себе поломать если хотите.

А можете описать нормально изначальную задачу, которая наверняка решается элементарно.

Спустя 1 час, 15 минут, 11 секунд (14.06.2010 - 00:04) Гость_Наталья написал(а):
Ну вообще все можно решить средствами java script, но я его незнаю.

Поэтому нужен синтаксис set @rownum:=-1;SELECT id, name, @rownum:=@rownum+1 AS rownum FROM table;

Подскажите, если не сложно, как правильно написать. Хочу понять как правильно вывести номер строки, а дальше сама справлюсь

Спустя 1 час, 18 минут, 49 секунд (14.06.2010 - 01:23) Гость_Наталья написал(а):
Как сделать запрос в БД разобралась.Все получилось. Как вывести все это в PHP?Не понятно и возможно ли. И можно вообще с этим как-то работать?

Спустя 7 часов, 32 минуты, 6 секунд (14.06.2010 - 08:55) SlavaFr написал(а):
Цитата (Гость_Наталья @ 13.06.2010 - 22:23)
Как сделать запрос в БД разобралась.Все получилось. Как вывести все это в PHP?Не понятно и возможно ли. И можно вообще с этим как-то работать?

смотри соответственную документацию и примеры.

http://de.php.net/manual/en/book.mysql.php
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.