Forum Webscript.Ru
Общие => Базы данных => Тема начата: Goodwin от 15 Января 2003, 12:22:59
-
Прайс лежит в базе MySQL.
Есть тем, конечно, индекс, но результат все равно выдается как бог на душу положит.
Скажем, есть в прайсе позиции Стул белый, Стул серый, Стол.
Так он их выдает в таком порядке: Стул белый, Стол, Стул серый.
Как сделать так, чтобы расположение позиций можно было менять (или добавить позицию в центр прайса, а не в конец)?
Сейчас я вижу только один вариант - вручную переписывать индекс, но при большом объеме это не выход.
-
Поиск по этому форуму.
Много раз обсуждалось.
-
Введи поде в таблице, характеризующее позицию товара в прайс листе.
-
Да я уж обыскался. Какие слова не в вожу - никак то, что надо не находится.
>>Введи поде в таблице, характеризующее позицию товара в прайс листе.
Я тоже думал об этом. Но если в таблице сто товаров и я хочу на пятое место что-то добавить, то ко всем остальным придется вручную добавлять единичку? Можно, конечно, это реализовать программно, но по-моему это можно как-то проще сделать. Должна же быть какая-то функция "вставить между строк". :-)
-
> Должна же быть какая-то функция "вставить между строк". :-)
нет, не должна, потому что СУБД хранит данные в неупорядоченном виде и ей все равно какая у тебя по счету эта строка 5я или 7я.
> о ко всем остальным придется вручную добавлять единичку?
сложно сделать:
update table set position=position+1 where position>\'some number\' order by position desc
?
-
тупо, но я делаю так:
$number = 4;
for ($i = $number; $i < 10; $i++)
{
$query = mysql_query("UPDATE test set num = num+1 where num>\'$number\'");
}
но ничего неполучиается, т.е. все значения мне просто переписывает по наименьшему или наибольшему... в запросе проблема, но как его переписать в голову неприходит.. any ideas?
-
> все значения мне просто переписывает по наименьшему или наибольшему
вот из этого объяснения я ничего не поняла.
и не плохо бы было добавить ORDER BY к запросу, а то если у тебя это уникальный ключ - будут ошибки выводится.
-
Братва, а как быть если позиция 10, так как машина автоматом ставит 10 и 100 после 1..., так же 20 и 200 после 2 итд и тп.
-
Вот пример:
(http://www.sasha-uk.hotbox.ru/position.gif)
-
alex007
у тебя position какой тип имеет ?
Varchar что-ли ? :)
-
Макс
По ошибке текстом стояло :) переменил на mediumint, теперь всё -OK