Forum Webscript.Ru

Общие => Базы данных => Тема начата: Goodwin от 15 Января 2003, 12:22:59

Название: Сортировка в MySQL чтоб как я хочу
Отправлено: Goodwin от 15 Января 2003, 12:22:59
Прайс лежит в базе MySQL.
Есть тем, конечно, индекс, но результат все равно выдается как бог на душу положит.
Скажем, есть в прайсе позиции Стул белый, Стул серый, Стол.
Так он их выдает в таком порядке: Стул белый, Стол, Стул серый.
Как сделать так, чтобы расположение позиций можно было менять (или добавить позицию в центр прайса, а не в конец)?
Сейчас я вижу только один вариант - вручную переписывать индекс, но при большом объеме это не выход.
Название: Сортировка в MySQL чтоб как я хочу
Отправлено: NeoNox от 15 Января 2003, 12:36:38
Поиск по этому форуму.
Много раз обсуждалось.
Название: Сортировка в MySQL чтоб как я хочу
Отправлено: ThE0ReTiC от 15 Января 2003, 12:36:50
Введи поде в таблице, характеризующее позицию товара в прайс листе.
Название: Сортировка в MySQL чтоб как я хочу
Отправлено: Гость от 15 Января 2003, 15:39:51
Да я уж обыскался. Какие слова не в вожу - никак то, что надо не находится.

>>Введи поде в таблице, характеризующее позицию товара в прайс листе.

Я тоже думал об этом. Но если в таблице сто товаров и я хочу на пятое место что-то добавить, то ко всем остальным придется вручную добавлять единичку? Можно, конечно, это реализовать программно, но по-моему это можно как-то проще сделать. Должна же быть какая-то функция "вставить между строк". :-)
Название: Сортировка в MySQL чтоб как я хочу
Отправлено: fidget от 15 Января 2003, 15:47:52
> Должна же быть какая-то функция "вставить между строк". :-)
нет, не должна, потому что СУБД хранит данные в неупорядоченном виде и ей все равно какая у тебя по счету эта строка 5я или 7я.

> о ко всем остальным придется вручную добавлять единичку?
сложно сделать:

update table set position=position+1 where position>\'some number\' order by position desc

?
Название: Сортировка в MySQL чтоб как я хочу
Отправлено: dope от 14 Апреля 2003, 17:48:48
тупо, но я делаю так:

$number = 4;
for ($i = $number; $i < 10; $i++)
{
$query = mysql_query("UPDATE test set num = num+1 where num>\'$number\'");
}


но ничего неполучиается, т.е. все значения мне просто переписывает по наименьшему или наибольшему... в запросе проблема, но как его переписать в голову неприходит.. any ideas?
Название: Сортировка в MySQL чтоб как я хочу
Отправлено: fidget от 14 Апреля 2003, 21:09:29
> все значения мне просто переписывает по наименьшему или наибольшему

вот из этого объяснения я ничего не поняла.

и не плохо бы было добавить ORDER BY к запросу, а то если у тебя это уникальный ключ - будут ошибки выводится.
Название: Сортировка в MySQL чтоб как я хочу
Отправлено: alex007 от 31 Марта 2004, 15:33:05
Братва, а как быть если позиция 10, так как машина автоматом ставит 10 и 100 после 1..., так же 20 и 200 после 2 итд и тп.
Название: Сортировка в MySQL чтоб как я хочу
Отправлено: alex007 от 31 Марта 2004, 17:07:44
Вот пример:
(http://www.sasha-uk.hotbox.ru/position.gif)
Название: Сортировка в MySQL чтоб как я хочу
Отправлено: Макс от 31 Марта 2004, 18:23:26
alex007
у тебя position какой тип имеет ?
Varchar что-ли ? :)
Название: Сортировка в MySQL чтоб как я хочу
Отправлено: alex007 от 31 Марта 2004, 18:49:46
Макс
По ошибке текстом стояло :) переменил на mediumint, теперь всё -OK