|
|
|
|
CREATE TABLE `test` (
`id` tinyint(4) NOT NULL auto_increment,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=cp1251
|
id name
1 один
2 два
7 три
12 четыре
133 пять
|
Выбрать три последовательных позиций
$res=mysql_query("SELECT *
FROM `test`
WHERE `id` = '$id'
?????????????????????
ORDER BY id
LIMIT 0 , 3
", $db);
|
Должно выводиться при...
$id = 1 --->выбираем строки -->два,три ,четыре
$id = 2 --->выбираем строки -->три ,четыре,пять
$id = 7 --->выбираем строки -->четыре,пять,один
$id = 12 --->выбираем строки -->пять,один,два
$id = 133--->выбираем строки -->один ,два,три
Возможно ли средствами MySOL сделать такую выборку? | |
|
|
|
|
|
|
|
для: serjinio
(13.10.2008 в 10:56)
| | Зачем Вам это средствами SQL?
И на каком основании выбраны эти строки?
$id = 7 --->выбираем строки -->четыре,пять,один
$id = 12 --->выбираем строки -->пять,один,два
$id = 133--->выбираем строки -->один ,два,три
Почему после пяти следует один, а наибольший id ссылается вдруг на значения из трех минимальных ключей?
Формального ответа Вы дать не сможете.
Фактически, на php-уровне задача решается в два счета.
На SQL придется извращаться так, что овчинка выделки не стоит. | |
|
|
|
|
|
|
|
для: Trianon
(13.10.2008 в 11:47)
| | Все понял,сделаю на PHP Спасибо.
Оказалось все не так просто...
Вот что надо получить ..обратная выборка...
Id name
1 пять,четыре,три
2 один,пять,четыре
7 два,один,пять
12 три,два,один
133 один,два,три
|
или прямая выборка
Id name
1 два,три,четыре
2 три,четыре,пять
7 четыре,пять,один
12 пять, один,два
133 один,два,три
|
те надо `закольцевать` массив...притом возможны варианты..
т.е не имеет значение чередование вывода в строке например ..
Id name
1 два,три,четыре
1 три,четыре,два
1 четыре,три,два
|
Подскажите в каком направлении двигаться? | |
|
|
|