Для одного PHP проекта сделал такую таблицу. Это карта с ячейками (x,y), которые можно занять.
Возможность занять - колонка `register`.
CREATE TABLE `map` (
`x` smallint(4) unsigned NOT NULL,
`y` smallint(4) unsigned NOT NULL,
`img` varchar(100) NOT NULL,
`possible` tinyint(1) NOT NULL,
`register` tinyint(1) NOT NULL,
`uid` mediumint(10) unsigned NOT NULL default '0',
`tid` mediumint(10) unsigned NOT NULL default '0',
PRIMARY KEY (`x`,`y`,`register`),
KEY `possible` (`possible`),
KEY `register` (`register`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Требуется выбирать из таблицы свободные ячейки. Делаю запрос вида
SELECT * FROM `map` WHERE x BETWEEN 0 AND 10 AND y BETWEEN 0 AND 10 AND register=1
Но проблема в том, в этом случае порядок ячеек будет:
x | y
0 | 0
0 | 1
0 | 2
0 | 3
....
Верхняя часть рисунка.
А мне нужно, чтобы ячейки выбирались "по спирали", т.е. постепенно заполняя карту, увеличивая радиус (Нижняя часть рисунка).
Есть ли у MySQL возможность отсортировать значения особым образом или может можно это сделать через хранимые процедуры.
Прикрепленные файлы:
map.jpg, Размер: 17,306 байт, Скачано: 539