- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Нам нужно получить 10 результатов, правильно?
Что будет если мы сделаем этот запрос для id = 3.
Сколько мы получим результатов?
При условии, что id начинаются с 1 и идут подряд, то 5 с одной стороны и 2 с другой, итого будет 7.
При условии, что id начинаются с 1 и идут подряд, то 5 с одной стороны и 2 с другой, итого будет 7.
Спасибо, я хотел сказать что это не решает задачу
Естественно исходя их 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 # предыдущий товар
Вы хотите узнать расстояние до ближайших городов, но при этом совершенно не важно, где вы находитесь. Как то так у вас выходит :)
На вскидку :
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 результатов. И сделать это максимально просто.
Я же вам привел уже самое простое решение. Неужели так сложно подставить свои цифры ?
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 поста (ASC, DESC) куда еще проще?
А то что если в находитесь на ID=3 и запрос предыдущих постов выберет 2 записи, так это уже не к mysql нужно обращаться, так как он не фантаст и фантазировать не может. Делайте тогда еще проверку, что то вроде, если count < 5, то делайте другую выборку.
В таком случае если вы находитесь на id=3, сработают 3 SQL запроса, а так всего 2. При чем эти запросы пустяковые и совсем не нагруженные.
Я же вам привел уже самое простое решение. Неужели так сложно подставить свои цифры ?
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 результатов. Например если нет данных слева брать данные с конца.
Десятью запросами и сам могу написать. Хочу увидеть простое решение.
Как вы себе это представили "id < 3 order by id desc limit 10" ? Сколько вернется результатов?
Нужно получить 10 результатов. 5 справа, 5 слева (это все условно, количество не важно)
Давайте вернемся к математике второго класса. Разложите перед собой 10 спичек . Отсчитайте 3 - это ваш текущий ID. Каким образом, две спички слева, можно превратить в 5 результатов ?
Например если нет данных слева брать данные с конца.
Проверить число записей в рекордсете. А далее в зависимости от выбранного языка программирования, при помощи оператора IF делать нужные выборки.
Десятью запросами и сам могу написать. Хочу увидеть простое решение.
Еще раз, решение выше. Проще уже некуда.
Давайте вернемся к математике второго класса. Разложите перед собой 10 спичек . Отсчитайте 3 - это ваш текущий ID. Каким образом, две спички слева, можно превратить в 5 результатов ?
Кто сказал что спичек десять?
Проверить число записей в рекордсете. А далее в зависимости от выбранного языка программирования, при помощи оператора IF делать нужные выборки.
Еще раз, решение выше. Проще уже некуда.
Эх.. Решение чего? Я несколько раз написал задачу.
Нужно вытащить 5 записей справа и 5 слева. Если нет в конце или вначале брать с обратной стороны.
Например:
Если id = 3 нужно получить n-3, n-2, n-1, 1, 2, 4, 5, 6, 7, 8