[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MySQL - выбрать строку от и до
Gadzilla
Есть таблица в БД, в которой есть параметр slot. Он принимает значения от 1 до 30 (в БД уже созданы эти строки, в них указан только параметр slot (30 строк)), в зависимости от значения он выстраивается в нужную ячейку в таблице на сайте. Если параметр slot равен 0, значит, эта строка не выводится в таблицу.
Задача такая:
Необходимо сделать запрос MySQL в PHP, чтобы записать строку с параметром slot 0 в таблицу с ближайшим свободным значением slot'a.
Т.е. сделать UPDATE строки с параметром slot 0, и если, например, в таблице уже есть 5 записей (slot=1, slot=2, slot=3, slot=4, slot=5) то значение slot 0 изменить на следующее свободное (slot=6). Какой командой такое можно реализовать?



Спустя 22 минуты (15.03.2011 - 17:17) Gadzilla написал(а):
Т.е. надо выбрать кол-во строк, у которых параметр slot больше нуля.

Спустя 1 минута, 25 секунд (15.03.2011 - 17:18) Trianon написал(а):
в таблицах SQL нет следующих или предыдущих строк.
Все строки лежат внавал.
Строить порядок так или иначе придется по какому-то полю.

Спустя 11 минут, 10 секунд (15.03.2011 - 17:29) Gadzilla написал(а):
Хорошо.
Но дело в том, что у 30 строк есть свой порядковый номер:
1, 2, 3, 4 и т.д.
После того, как пользователь выберет строку из таблицы (т.е. присвоит ей параметр 0) а затем захочет ее вернуть на место, нужно запросом найти свободную строку в интервале ИД от 1 до 30, и ЕСЛИ есть свободный ИД в этом интервале, то записать под номером свободного.

Спустя 5 минут (15.03.2011 - 17:34) Trianon написал(а):
Если у строки есть порядковый номер, то в каком поле таблицы он хранится?
Абстрактно, вне связи со значениями хранящихся полей, порядкового номера у строк SQL-таблиц нету.
Нету, хотите Вы этого или не хотите.

Спустя 15 минут, 16 секунд (15.03.2011 - 17:50) Gadzilla написал(а):
Хорошо. Предположим, у меня в PHP переменных есть числа:
1
2
3
4
5
7
8
12
13
15

Каким образом я могу получить пропущенные числа?

Спустя 10 минут, 34 секунды (15.03.2011 - 18:00) Trianon написал(а):
по разному.
Например. так:

 $numbers = array(3,4,5,7,8,12,13,15);
$min = min($numbers);
$max = max($numbers);
for($i = $min; $i <= $max; $i++)
if(!in_array($i, $numbers))
echo " $i";
Быстрый ответ:

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