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

  • Автор темы Автор темы maykl
  • Дата начала Дата начала

maykl

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

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

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

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

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

Чтобы вычислить положение SELECT id FROM table_sort WHERE sid=..
находим id а алгоритм приведен выше.
 
пардон, меня интересовало не твое кустарное устройство по определению места, а как задается порядок сортировки
почему сортировка в отдельной таблице, а не в той же самой?
 
Можно и в той-же таблице но не хотелось бы лишний раз дергать здоровенную таблицу которая и так дергается постоянно. А так дергается вспомогательная а потом напрямую по id выбираются записи.
 
а, дошло.
а остроумная идея с удалением и вставкой.
select count(*) from table_sort where id > $id
и никакой поправочный коэффициент не нужен. механизм его использования до меня, кстати, так и не дошел

база данных, кстати, чтоб ты знал, именно для того и придумана, чтобы её дергали. В частности, здесь дергается не таблица, а индекс. А к той же он будет относиться таблице, или другой - без разницы.
 
хорошо звучит...По-русски....
анкета нах. на 121 месте
Можно и в той-же таблице но не хотелось бы лишний раз дергать здоровенную таблицу которая и так дергается постоянно. А так дергается вспомогательная а потом напрямую по id выбираются записи.
Если тебе всё ясно самому, то какой помощи ты ждёшь?
 
Интересовал способ более простой, без доп. таблицы.
често говоря не осилил
select count(*) from table_sort where id > $id
что это даст?
 
Сверху