Может кто с задачей помочь?

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

FireStar
Сообщения: 6
Зарегистрирован: 01 июл 2008, 08:55

Имеется таблица с 10 произвольными товарами разной стоимости, нужно составить SQL запрос, который выводит наиболее дорогой.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

[syntax='sql']select max(стоимость), наименование
from таблица[/syntax]
Изображение
FireStar
Сообщения: 6
Зарегистрирован: 01 июл 2008, 08:55

В Access max() не проходит.
Как можно через поиск это оформить? С временной переменной, циклом, который цену у всех подряд проверяет и выборкой где стоимость = вр.переменная.
Алгоритм себе представляю, но не знаю синтаксиса.
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

Игорь Акопян, позвольте чуть-чуть подправить код (дело в том, что многие СУБД ревностно относятся к стандарту. ORACLE, например, выдаст ошибку
ORA-00937 not a single-group group function
Cause: A SELECT list cannot include both a group function, such as AVG, COUNT, MAX, MIN, SUM, STDDEV, or VARIANCE, and an individual column expression, unless the individual column expression is included in a GROUP BY clause.)


нужно добавить GROUP BY наименование:

Код: Выделить всё

SELECT max(стоимость), наименование FROM таблица GROUP BY наименование
FireStar
Сообщения: 6
Зарегистрирован: 01 июл 2008, 08:55

Не работает у меня этот макс.
Попробовал вставить это в access в таком виде:
SELECT max(стоимость), название
FROM товары
GROUP BY название;
Выдаёт все строки таблицы (цены во всех стоят разные) вместо одной.
Vasilisk
Сообщения: 116
Зарегистрирован: 13 фев 2004, 18:43

Если мне память не изменяет, то max/min работают либо с GROUP BY, либо с HAVING. Если ты пользуешься MS Access, то нет ничего проще - воспользуйся QBE, который встроен в Access - он же позволяет вводить выражения, а max - там точно есть.
FireStar
Сообщения: 6
Зарегистрирован: 01 июл 2008, 08:55

Мне нужно именно в SQL, без построителей и QBE
chur
Сообщения: 195
Зарегистрирован: 17 фев 2004, 10:44
Откуда: Riga, Latvia

Если для MS Access, то можно так:

SELECT TOP 1 стоимость, название
FROM товары
ORDER BY стоимость DESC;
Vasilisk
Сообщения: 116
Зарегистрирован: 13 фев 2004, 18:43

FireStar писал(а):Мне нужно именно в SQL, без построителей и QBE


А ты до того, как свой вопрос сюда написать своими глазами Access-то видал? В котором у него месте SQL-то вводится и как? :p :p
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

Vasilisk, а лично Вы с Access давно работаете?.. вот я лично — нет. :-)
но ответ на Ваш вопрос тем не менее знаю! :-)
Запускаешь Access, слева там была закладка запросы, запускаешь в режиме конструктора, потом правой кнопкой, выбираешь "Режим SQL" - пишешь свой текст...
Ответить