SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.02.2013 06:52:49

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Как вернуть значение с максимально близкой величиной

Подскажите, пожалуйста. Скажем в таблице есть колонка с ценой table.price,
price=10
price=15
price=20

я делаю запрос

select * from table where price='13'

Учитывая, что такой цены нет, то данные возвращены не будут, но мне надо вернуть price='15'
и/или price='10'. т.е. максимально близкое значение, в большую и/или меньшую сторону.

Как это сделать


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#2 27.02.2013 13:13:38

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как вернуть значение с максимально близкой величиной

select * from table where price>='13' order by price limit 1; -- вернет ближайшее в большую сторону, если нет точного совпадения.

Неактивен

 

#3 27.02.2013 14:29:52

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: Как вернуть значение с максимально близкой величиной

Дело в том что мне нужно вернуть не одно ближайшее, а все ближайшие. Т.е. все price=15


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#4 27.02.2013 14:37:29

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как вернуть значение с максимально близкой величиной

select t.* from `table` t join (select price from `table` where price>='13' order by price limit 1) t1 using(price);

Неактивен

 

#5 27.02.2013 15:50:50

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: Как вернуть значение с максимально близкой величиной

Спасибо за ответ. Только думал, может в Mysql какая-то функция для этого дела есть навроде min, max


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#6 28.02.2013 18:20:59

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: Как вернуть значение с максимально близкой величиной

Подскажите, пожалуйста. Мне нужно вернуть максимальную и минимальную величину название фирмы, где продается товар.

Я делаю так

select min(price), name_org from kursua where tovar='Телефон'


Но на выходе в названии получаю первое попавшееся название, а мне нужно то, где
price=min(price)
Как можно такое сделать?


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#7 28.02.2013 18:46:50

invisible73
Участник
Зарегистрирован: 18.02.2013
Сообщений: 2

Re: Как вернуть значение с максимально близкой величиной

SELECT price, name_org FROM kursua WHERE tovar='Телефон' ORDER BY price ASC LIMIT 1

Отредактированно invisible73 (28.02.2013 18:47:42)

Неактивен

 

#8 28.02.2013 18:49:01

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Как вернуть значение с максимально близкой величиной

Так не надо выбирать - потому что пытаетесь одновременно выбрать колонку (name_org) и скалярное значение (min_price) - это некорректно. MySQL такое позволяет, но это не повод smile.
Лучше

SELECT `price`, `name_org` FROM `kursua` WHERE `tovar` = 'Телефон' ORDER BY `price` LIMIT 1

и
SELECT `price`, `name_org` FROM `kursua` WHERE `tovar` = 'Телефон' ORDER BY `price` DESC LIMIT 1


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#9 28.02.2013 20:07:11

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: Как вернуть значение с максимально близкой величиной

Спасибо за ответ. Как то не подумал, что нужно просто отсортировать в нужную сторону по нужной колонке. Хотя вроде запрос проще некуда.


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#10 28.02.2013 21:10:42

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: Как вернуть значение с максимально близкой величиной

ASC я насколько понимаю не обязательный параметр, тк. он сортирует сначала. Только тогда не ясно зачем он нужен, если по умолчанию уже установлена такая сортировка?

Отредактированно platedz (01.03.2013 00:42:24)


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson