| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Как вытащить 2-а предыдущих элемента |
| Автор: StreetPeople 16.9.2008, 09:51 |
| Встала задача написать левое меню, как на картинке, для интернет-магазина. Когда мы находимся в каком-то каталоге мы должны видеть все товары, которые находятся в нём, а также целый список каталогов, которые находятся на уровне родителя этого каталога, и все каталоги которые находятся на 2-а уровня вложенности выше и т.д., причём каждый список товаров, должен начинаться на 2-а элемента раньше чем текущий каталог. Проще говоря мне нужно написать mySQL запрос который позволяет вытащить из таблицы n элементов, 2-а из которых (на изображении серые) находятся "выше" чем элемент который мы запрашиваем через ID (сразу оговорюсь, что ID не циферный). Ребята по MSSQL советовали воспользоваться "SELECT Top -2", но к сожалению в MySQL есть только LIMIT, на котором, то, о чём я говорю написать невозможно. У кого-нить есть какие-нибудь соображения на сей счёт? Может кто-то с этим уже сталкивался? |
| Автор: ТоляМБА 16.9.2008, 10:29 | ||||||
По идее должен выдать
Оно? |
| Автор: StreetPeople 16.9.2008, 11:20 | ||||
Немного подредактировал запрос ТоляМБА
на
Вообще ID циферный, конечно, счётчик. Я сказал что id не циферный потому что, сразу понял, что мне предложат вариант с операторами сравнения, но такой способ не подходит, потому что можно случайно нарушить целостность представления товаров БД, потому что есть поле по которому все каталоги сортируются `mis_products_relations`.`position`, если это поле равно 0 для нескольких каталогов, тогда они сортируются соотв. порядку их созданию... Таким образом мы можем спокойно исправить поле `mis_products`.`id` любого товара на любое число не вписывающееся в последовательность и больше ID запрошенного товара и тогда запрос выше перестанет работать корректно, точнее - он это поле будет пропускать... skyboy Товаров и каталогов может быть очень много, в среднем 500-1000, поэтому закачивать всю таблицу было бы не экономично... А насчёт Nokia N810, это просто неуглядел))) В общем он тоже чёрный, как и остальные нокии... |