Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вытащить 2-а предыдущих элемента, Зная ID текущего элемента 
:(
    Опции темы
StreetPeople
  Дата 16.9.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 7.7.2007

Репутация: нет
Всего: 1



Встала задача написать левое меню, как на картинке, для интернет-магазина.

Когда мы находимся в каком-то каталоге мы должны видеть все товары, которые находятся в нём, а также целый список каталогов, которые находятся на уровне родителя этого каталога, и все каталоги которые находятся на 2-а уровня вложенности выше и т.д., причём каждый список товаров, должен начинаться на 2-а элемента раньше чем текущий каталог.

Проще говоря мне нужно написать mySQL запрос который позволяет вытащить из таблицы n элементов, 2-а из которых (на изображении серые) находятся "выше" чем элемент который мы запрашиваем через ID (сразу оговорюсь, что ID не циферный).

Ребята по MSSQL советовали воспользоваться "SELECT Top -2", но к сожалению в MySQL есть только LIMIT, на котором, то, о чём я говорю написать невозможно.

У кого-нить есть какие-нибудь соображения на сей счёт? Может кто-то с этим уже сталкивался?

Это сообщение отредактировал(а) StreetPeople - 16.9.2008, 09:53

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  products_catalog.jpg 63,90 Kb
PM MAIL   Вверх
skyboy
Дата 16.9.2008, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(StreetPeople @  16.9.2008,  08:51 Найти цитируемый пост)
2-а из которых (на изображении серые) находятся "выше" чем элемент который мы запрашиваем через ID (сразу оговорюсь, что ID не циферный).

возможно, я тебя не понял, но мне кажется, что "через id" ты запрашиваешь не "телефоны", а "nokia n810". тогда решение будет зависеть от структурі хранения дерева.
потом: много ли разделов имеется? если немного, можно формировать дерево полностью, а потом отсекать ненужное.

PM MAIL   Вверх
ТоляМБА
Дата 16.9.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 10
Всего: 252



Цитата(StreetPeople @  16.9.2008,  12:51 Найти цитируемый пост)
Проще говоря мне нужно написать mySQL запрос который позволяет вытащить из таблицы n элементов, 2-а из которых (на изображении серые) находятся "выше" чем элемент который мы запрашиваем через ID

Код
Select ID
from Table1
where id<='Телефоны'
Order by id DESC
Limit 3

По идее должен выдать
Цитата
Телефоны
Компьютеры
Кроссовки


Оно?


PM   Вверх
StreetPeople
  Дата 16.9.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 7.7.2007

Репутация: нет
Всего: 1



Немного подредактировал запрос ТоляМБА

Код

Select ID
from Table1
where id<='Телефоны'
Order by id DESC
Limit 3


на

Код

Select ID
from mis_products
where id<=11 AND b_display=1
Order by id DESC
Limit 3



Вообще ID циферный, конечно, счётчик. Я сказал что id не циферный потому что, сразу понял, что мне предложат вариант с операторами сравнения, но такой способ не подходит, потому что можно случайно нарушить целостность представления товаров БД, потому что есть поле по которому все каталоги сортируются `mis_products_relations`.`position`, если это поле равно 0 для нескольких каталогов, тогда они сортируются соотв. порядку их созданию... Таким образом мы можем спокойно исправить поле `mis_products`.`id` любого товара на любое число не вписывающееся в последовательность и больше ID запрошенного товара и тогда запрос выше перестанет работать корректно, точнее - он это поле будет пропускать...




skyboy
Товаров и каталогов может быть очень много, в среднем 500-1000, поэтому закачивать всю таблицу было бы не экономично...
А насчёт Nokia N810, это просто неуглядел))) В общем он тоже чёрный, как и остальные нокии...

Это сообщение отредактировал(а) StreetPeople - 16.9.2008, 11:25

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  _________1.jpg 812,52 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0956 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.