Как оганизовать положение в общем списке (ваша анкета нах. на 121 месте )

maykl

Новичок
Как оганизовать положение в общем списке (ваша анкета нах. на 121 месте )

Столкнулся с проблемой опр. положения места объявления.
Есть вариант решения
создается две таблицы в одной хранится id и sid идентификатор товара если товар добавляется в таблицу то он получает новый id котрый на 1 больше предыдущего
а в другой хранится поправочный коэффициент если запись удаляется то он увеличивается. И того мы имеем
для вычисления положения
ищем по sid нужный id
потом из id вычитаем поправочный коэффициент
потом SELECT count(*) берем всего кол-во записей и из него вычитаем значение полученное выше.
Фактически получаем номер в списке.
Вопрос в том. Как можно сделать проще к примеру средствами MySQL?
 

Фанат

oncle terrible
Команда форума
сначала попробуй сформулировать термин, которым ты пользуешься.
что значит "анкета нах. на 121 месте"? что означает это место и от чего зависит.
 

maykl

Новичок
Означает следующее, есть список в котором объявление путем отправки смс или еще чего-нибудь поднимается на верх и становится первым в списке. Каждое новое объявления по умолчанию становится первым в списке.
Фактически ваша анкета нах. на 121 месте означает что при выводе списка она будет 121-ой.
 

Фанат

oncle terrible
Команда форума
прекрасно.
а теперь то же самое, но в терминах базы данных. какие поля участвуют в этом и прочее.
 

maykl

Новичок
Первая таблица со списком объявлений
sid
name
parametrs

Таблица сортировки table_sort
id (inc) при вставке id увличивается авт. на 1
sid

Третья таблица хранит одну запись с поправочным коэфф. который увеличиваем на 1 если удаляется запись.

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

Чтобы вычислить положение SELECT id FROM table_sort WHERE sid=..
находим id а алгоритм приведен выше.
 

Фанат

oncle terrible
Команда форума
пардон, меня интересовало не твое кустарное устройство по определению места, а как задается порядок сортировки
почему сортировка в отдельной таблице, а не в той же самой?
 

maykl

Новичок
Можно и в той-же таблице но не хотелось бы лишний раз дергать здоровенную таблицу которая и так дергается постоянно. А так дергается вспомогательная а потом напрямую по id выбираются записи.
 

Фанат

oncle terrible
Команда форума
а, дошло.
а остроумная идея с удалением и вставкой.
select count(*) from table_sort where id > $id
и никакой поправочный коэффициент не нужен. механизм его использования до меня, кстати, так и не дошел

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

cDLEON

Онанист РНРСlub
хорошо звучит...По-русски....
анкета нах. на 121 месте
Можно и в той-же таблице но не хотелось бы лишний раз дергать здоровенную таблицу которая и так дергается постоянно. А так дергается вспомогательная а потом напрямую по id выбираются записи.
Если тебе всё ясно самому, то какой помощи ты ждёшь?
 

maykl

Новичок
Интересовал способ более простой, без доп. таблицы.
често говоря не осилил
select count(*) from table_sort where id > $id
что это даст?
 
Сверху