предыдущий и следующий продукт

12
VulkanPartner
На сайте с 27.03.2014
Offline
91
#11
gims:
Нам нужно получить 10 результатов, правильно?
Что будет если мы сделаем этот запрос для id = 3.
Сколько мы получим результатов?

При условии, что id начинаются с 1 и идут подряд, то 5 с одной стороны и 2 с другой, итого будет 7.

https://perestroika.team/ru/ (https://perestroika.team/ru/) Perestroika Affiliates- ведущая гемблинг-партнерка. RevShare - до 60%. CPA - до 150$.
G
На сайте с 13.03.2014
Offline
4
#12
VulkanPartner:
При условии, что id начинаются с 1 и идут подряд, то 5 с одной стороны и 2 с другой, итого будет 7.

Спасибо, я хотел сказать что это не решает задачу

S
На сайте с 23.05.2004
Offline
315
#13
gims:
Естественно исходя их id продукта. Не пойму причем тут сортировки?

Вы хотите узнать расстояние до ближайших городов, но при этом совершенно не важно, где вы находитесь. Как то так у вас выходит :)

На вскидку :

select * from product where id > {current_id} order by id asc limit 1 # следующий товар

select * from product where id < {current_id} order by id desc limit 1 # предыдущий товар

Это просто подпись.
G
На сайте с 13.03.2014
Offline
4
#14
Stek:
Вы хотите узнать расстояние до ближайших городов, но при этом совершенно не важно, где вы находитесь. Как то так у вас выходит :)

На вскидку :
select * from product where id > {current_id} order by id asc limit 1 # следующий товар
select * from product where id < {current_id} order by id desc limit 1 # предыдущий товар

С чего вы взяли что не важно? Я сказал что нахожусь на id=3. Мне нужно получит 10 результатов. И сделать это максимально просто.

S
На сайте с 23.05.2004
Offline
315
#15

Я же вам привел уже самое простое решение. Неужели так сложно подставить свои цифры ?

select * from product where id > 3 order by id asc limit 10 # следующий товар

select * from product where id < 3 order by id desc limit 10 # предыдущий товар

Станислав
На сайте с 27.12.2009
Offline
254
#16

Что значит максимально просто?

Вам уже написали запрос, где идет сортировка от ID поста (ASC, DESC) куда еще проще?

А то что если в находитесь на ID=3 и запрос предыдущих постов выберет 2 записи, так это уже не к mysql нужно обращаться, так как он не фантаст и фантазировать не может. Делайте тогда еще проверку, что то вроде, если count < 5, то делайте другую выборку.

В таком случае если вы находитесь на id=3, сработают 3 SQL запроса, а так всего 2. При чем эти запросы пустяковые и совсем не нагруженные.

Мы там, где рады нас видеть.
G
На сайте с 13.03.2014
Offline
4
#17
Stek:
Я же вам привел уже самое простое решение. Неужели так сложно подставить свои цифры ?

select * from product where id > 3 order by id asc limit 10 # следующий товар
select * from product where id < 3 order by id desc limit 10 # предыдущий товар

Я что ваш юмор не понимаю? Это все уже писали выше.

Как вы себе это представили "id < 3 order by id desc limit 10" ? Сколько вернется результатов?

Нужно получить 10 результатов. 5 справа, 5 слева (это все условно, количество не важно)

При том что даже id =1 должно быть 10 результатов. Например если нет данных слева брать данные с конца.

Десятью запросами и сам могу написать. Хочу увидеть простое решение.

S
На сайте с 23.05.2004
Offline
315
#18
gims:
Как вы себе это представили "id < 3 order by id desc limit 10" ? Сколько вернется результатов?

Нужно получить 10 результатов. 5 справа, 5 слева (это все условно, количество не важно)

Давайте вернемся к математике второго класса. Разложите перед собой 10 спичек . Отсчитайте 3 - это ваш текущий ID. Каким образом, две спички слева, можно превратить в 5 результатов ?

gims:
Например если нет данных слева брать данные с конца.

Проверить число записей в рекордсете. А далее в зависимости от выбранного языка программирования, при помощи оператора IF делать нужные выборки.

gims:
Десятью запросами и сам могу написать. Хочу увидеть простое решение.

Еще раз, решение выше. Проще уже некуда.

G
На сайте с 13.03.2014
Offline
4
#19
Stek:
Давайте вернемся к математике второго класса. Разложите перед собой 10 спичек . Отсчитайте 3 - это ваш текущий ID. Каким образом, две спички слева, можно превратить в 5 результатов ?

Кто сказал что спичек десять?

Stek:

Проверить число записей в рекордсете. А далее в зависимости от выбранного языка программирования, при помощи оператора IF делать нужные выборки.
Еще раз, решение выше. Проще уже некуда.

Эх.. Решение чего? Я несколько раз написал задачу.

Нужно вытащить 5 записей справа и 5 слева. Если нет в конце или вначале брать с обратной стороны.

Например:

Если id = 3 нужно получить n-3, n-2, n-1, 1, 2, 4, 5, 6, 7, 8

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий