Туплю, как взять предыдущие 2 товара из базы?

P
На сайте с 06.01.2009
Offline
601
680

Здравствуйте.

Подскажите, пожалуйста, что то не понимаю

такого плана запрос само собой берет просто первые 2 товара подходящие под условие, а мне надо именно предыдущие 2


idtov = текущий id товара...
$result2 = mysql_query("SELECT id FROM `tovary` WHERE collection='$kol' AND `id`<$idtov ORDER BY `id` LIMIT 2");

помогите, пожалуйста

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

ну возьмите 4-ре и выведите 2-а из них.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
P
На сайте с 06.01.2009
Offline
601
#2
LEOnidUKG:
ну возьмите 4-ре и выведите 2-а из них.

Ясно, т.е. взять все предыдущие, но вывести только 2 последних из них? т.е. в запросе убрать LIMIT 2

ps просто я думал можно одним запросом обойтись, без доп действий

W
На сайте с 09.04.2013
Offline
46
#3

ORDER BY `id` DESC LIMIT 2
totamon
На сайте с 12.05.2007
Offline
437
#4

webjey,

надо 2 предыдущие, а не последние

postavkin:
Ясно, т.е. взять все предыдущие, но вывести только 2 последних из них? т.е. в запросе убрать LIMIT 2
ps просто я думал можно одним запросом обойтись, без доп действий

LIMIT 2 поменять на LIMIT 4, и в скрипте вывести нужные. в mysql нет понятий следущий или предыдущий, запрос у вас и так один получается, просто в скрипте кода добавится обрабатывающего этот запрос)

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
W
На сайте с 09.04.2013
Offline
46
#5
totamon:
webjey,
надо 2 предыдущие, а не последние

Сорри, возможно я не понял задачу.Что значит предыдущие?
запрос

SELECT id FROM `tovary` WHERE collection='$kol' AND `id`<$idtov ORDER BY `id` LIMIT 2

выводит товары у которых id меньше текущего (предыдущие?) и сортирует по id

ORDER BY

Порядок сортировки по умолчанию — ASC.Прямой порядок т.е. выводит все товары у которых id <idtov начиная с первого. Я вывожу у которых id< idtov сортированные в обратном порядке т.е. с последнего.
SELECT id FROM `tovary` WHERE collection='$kol' AND `id`<$idtov ORDER BY `id` DESC LIMIT 2

Почему все советуют limit 4 ?Пожайлуста обьясните интересно стало.
P
На сайте с 06.01.2009
Offline
601
#6
totamon:
webjey,
надо 2 предыдущие, а не последние

LIMIT 2 поменять на LIMIT 4,

Почему 4 тоже не понятно.

Сделал. Взал вообще все id в массив, дальше определил ключ текущего и уже из массива взял 2 предыдущих товара и 2 следующих. Работает.

---------- Post added 20-03-2015 at 12:55 ----------

webjey:
ORDER BY `id` DESC LIMIT 2

Так не получится, так или иначе не зависимо от текущего id берет все время 2 одних и тех же. Суть то такая надо по порядку в таблице взять редыдущих 2. Вообщем я сделал через обработку массива.

Всем спасибо

S
На сайте с 13.10.2014
Offline
171
#7

если надо выбрать 2 записи пред предыдущих, то можно написать DESC LIMIT 2,2

но я тоже что-то не понял задачи

postavkin, если у вас 25 товаров - хорошо, а если 2,5 миллиона?

Если я правильно понял, вы ходите вытащить 4 товара одним запросом?

Одним запросом вытащить 2 товара свежее и 2 товара старее очень сложно, лучше побить на 2 коротких запроса

totamon
На сайте с 12.05.2007
Offline
437
#8
postavkin:
Почему 4 тоже не понятно.

да вопрос тоже не правильно понял) забудьте про 4.

в свой запрос добавьте DESC просто

idtov =  текущий id товара...
$result2 = mysql_query("SELECT id FROM `tovary` WHERE collection='$kol' AND `id`<$idtov ORDER BY `id` DESC LIMIT 2");

если idtov =10 то выведет 9 и 8

webjey правильно написал

P
На сайте с 06.01.2009
Offline
601
#9
silicoid:

postavkin, если у вас 25 товаров - хорошо, а если 2,5 миллиона?

Вы к тому, что нужно вынимать нужные запросом, а не как я сделал - все id вытащил в массив, нашел нужные.

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