Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2013, 18:01   #1
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию Запрос к БД MySQL (сложности выборки)

Есть таблица с числами

13
88
44
5
954
31
4
768
6


Есть число 5.

Как написать запрос к БД так чтобы ответ был такой:

5
4
6
13
31

Проще говоря чтобы сначала вывел точное совпадение а затем наибоее близки к искомому числа в порядке увеличения.
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Старый 26.05.2013, 18:12   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Почитай ORDER BY, HAVING и LIMIT
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.05.2013, 18:19   #3
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию

Не понимаю как сюда можно затисать HAVING, если он применяется для агригатных функций.

Простой сортировкой ORDER BY, тут тоже не отделаться. Например если пришло число 44, то результат необходим следующий:

44
31
13
6
5
4
88
768
954

Нужно находить числа и сортировать их по критерию близасти к исходному числу.
Например и предложенного ряда чисел наиболее близкое к числу 44 является 31 затем 13 и так далее.

Если все же ответ лежит в ORDER BY, HAVING и LIMIT, то подскажите как их скомбинировать чтобы получить нужный результат.
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Старый 26.05.2013, 18:25   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

Код:
select  *, abs(5-x) as y from ... order by y

Последний раз редактировалось eval; 26.05.2013 в 18:32.
eval вне форума Ответить с цитированием
Старый 26.05.2013, 18:35   #5
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию

Помогло. Спасибо большое.
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Старый 26.05.2013, 18:36   #6
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию

единственное, если не сложно прокомментируйте запрос пожалуйста. А то я половину из него несовсем понял.
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Старый 26.05.2013, 18:45   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

да нечего тут пояснять
берем разницу по абсолюту, по ней сортируем
eval вне форума Ответить с цитированием
Старый 26.05.2013, 18:58   #8
Алексей47
 
Регистрация: 19.05.2012
Сообщений: 3
По умолчанию

eval, как можно с вами связаться?
Алексей47 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
sql запрос выборки Vitia28 Microsoft Office Access 1 11.09.2012 03:09
запрос выборки из 2-х таблиц Андрей79 SQL, базы данных 1 04.03.2012 23:05
Создать запрос выборки из нескольких таблиц skilk SQL, базы данных 10 03.03.2012 10:47
Запрос выборки Asblue БД в Delphi 6 17.12.2010 17:45
как составить sql запрос для выборки по имени,фамилии и отчеству betirsolt БД в Delphi 8 12.05.2010 22:44