За последние 24 часа нас посетили 15547 программистов и 1613 роботов. Сейчас ищут 796 программистов ...

Как сделать выборку 10 чисел, максимально близких к искомому

Тема в разделе "MySQL", создана пользователем Nachtvolk, 4 фев 2013.

  1. Nachtvolk

    Nachtvolk Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    31
    Симпатии:
    0
    Нужно сделать выборку 10-ки DECIMAL, наиболее близких к искомому. Пока что все варианты, что пришли на ум, упираются в 2 запроса:
    а) выбрать всё, что меньше Х и, упорядочив по убыванию, выбрать первые 5 значений
    б) выбрать всё, что больше Х и, упорядочив по возрастанию, выбрать первые 5 значений

    А есть ли в MySQL какая-нибудь штука, которая упрощает эту задачу? В частности, есть ли функция, которая может выбрать 1 значение, максимально близкое к искомому?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Как сделать выборку 10 чисел, максимально близких к иско

    не очень понятна логика выбора. Если больше опорного числа будут только два, а меньше - много, то как выбирать "ближайшие"?
     
  3. Nachtvolk

    Nachtvolk Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    31
    Симпатии:
    0
    Re: Как сделать выборку 10 чисел, максимально близких к иско

    Два так два. Числами будут координаты, так что это не так важно.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Как сделать выборку 10 чисел, максимально близких к иско

    важно или не важно вопрос десятый.
    в таком случае выбирай двумя запросами по 10 в каждую сторону.
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Как сделать выборку 10 чисел, максимально близких к иско

    одним с юнионом?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Как сделать выборку 10 чисел, максимально близких к иско

    я за два запроса, т.к. не известно где "середина" =)
     
  7. Nachtvolk

    Nachtvolk Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    31
    Симпатии:
    0
    Re: Как сделать выборку 10 чисел, максимально близких к иско

    А есть ли какая-нибудь функция, которая может вывести одно максимально близкое к заданному число?
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Как сделать выборку 10 чисел, максимально близких к иско

    вроде нет. если бы направление было только одно, то как ты уже сказал - сортировка.
     
  9. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    делается просто. выбираем модуль разницы заданного числа и числа из столбца, и сортируем по этому значению, по возрастанию. вот и получится список чисел ближайших к заданному.
    Код (PHP):
    1. SELECT num 
    2. FROM numbers
    3. ORDER BY ABS(num- 99.99) ASC
    4. LIMIT 10
    тут 99.99 - это и есть заданное число, ближайшие к которому ищем
     
  10. Nachtvolk

    Nachtvolk Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    31
    Симпатии:
    0
    Re: Как сделать выборку 10 чисел, максимально близких к иско

    А вот это круто. Спасибо!
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Как сделать выборку 10 чисел, максимально близких к иско

    =) хехе
    дьявол в деталях