Выделить поле с наибольшим значением

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Выделить поле с наибольшим значением

Сообщение Aerus » 13.12.2006 (Ср) 21:29

Скажите пожалуйста, я использую dbgrid имеется 3 колонки. В 3-й колонки расстояния до города. Как мне сделать чтобы выделело то поле где это значение наибольшее ? Я так понял нужно использовать sql запрос. Покажите пожалуйста как это реализовать.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 13.12.2006 (Ср) 23:14

Пажалста перенесите эту в тему Базы данных, не досмотрел. Я использую базы Access.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 13.12.2006 (Ср) 23:21

сортируешь по убыванию, при этом берёшь первую запись. Т.е. ORDER BY... DESC ... LIMIT 1

либо используешь MAX
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 14.12.2006 (Чт) 0:43

Хакер
Скажите пожалуйста почему не срабатывает этот запрос:
Код: Выделить всё
Form5.Data1.RecordSource = "SELECT * FROM baza ORDER BY [distance] LIMIT 1"

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 14.12.2006 (Чт) 0:48

вероятно потому, что по умолчанию сортирует по возрастанию, и следовательно ты получаешь минимальный, а не максимальный "дистанс".

А лучше SELECT MAX('distance')
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 14.12.2006 (Чт) 1:23

Хакер
Оно опять их в порядке убывания выводит. :/ Интересно как бы развернуть список.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 14.12.2006 (Чт) 2:25

даю MySQL специфичные запросы

Код: Выделить всё
SELECT MAX(`distance`) AS `maxdist` FROM `baza`
или
SELECT * FROM `baza` ORDER BY `distance` DESC LIMIT 1

я могу напутать, потому что мне кажется что в Access вместо LIMIT надо юзать TOP.

Просто щас, после написания DAL-а, в голове sql-каша.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 14.12.2006 (Чт) 7:01

Код: Выделить всё
msgbox opendatabase("base1").openrecordset("select max(field1) from table1").fields(0)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.12.2006 (Чт) 8:39

Aerus писал(а):Скажите пожалуйста почему не срабатывает этот запрос:

Потому что LIMIT не является оператором SQL.
SELECT TOP 1 ...
Lasciate ogni speranza, voi ch'entrate.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 14.12.2006 (Чт) 21:25

Спасибо всем, если там есть значения -1 например то оно ставит их как -1 0,5 2,6 в таком порядке. Я решил использовать Movelast в итоге последняя и есть самая большая. Но единственный недостаток если т ам пустое поле, то оно и будет последним, как это предотвратить я даже не знаю.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 14.12.2006 (Чт) 22:33

Добавь в условии WHERE IS NOT NULL:
Код: Выделить всё
SELECT * FROM tablename where Field1 is NOT NULL ORDER BY Field1
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 14.12.2006 (Чт) 23:55

Странно, в data grid все это срабатывает, но на dbgrid ничего не изменилось, мне нужно именно в dbgrid, там показывает полностью строку в отличии от datagrid, вот странно...


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList