Страница 2 из 2

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

Добавлено: 02 июл 2008, 05:18
Serge_Bliznykov
&quot писал(а):Выдаёт все строки таблицы (цены во всех стоят разные) вместо одной.
да, так и должно быть. К сожалению, в посте #4 я был неправ.... сорри...

пробуйте код chur, похоже, что он сделает то, что нужно!

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

Добавлено: 02 июл 2008, 09:54
FireStar
Можно ли это в более общем виде представить?
&quot писал(а):С временной переменной, циклом, который цену у всех подряд проверяет и выборкой где стоимость = вр.переменная.
Как подобное можно на SQL реализовать?

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

Добавлено: 02 июл 2008, 10:09
Игорь Акопян
это уже похоже на stored procedure, а в акцессе вроде нет такого.
в качестве оправдания за свой глупый пост вариант с рабочим мах:
[syntax='SQL']
SELECT Таблица.Наименование, Таблица.Стоимость
FROM Таблица
WHERE (((Таблица.Стоимость)=(SELECT Max(Таблица.Стоимость) AS [Max-Стоимость]
FROM Таблица)));
[/syntax]
Но этот вариант покажет все записи, у которых стоимость = максимальной (если их несколько), а вариант chur только один, так что выбирайте

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

Добавлено: 02 июл 2008, 10:18
FireStar
Игорь Акопян писал(а):это уже похоже на stored procedure, а в акцессе вроде нет такого.
в качестве оправдания за свой глупый пост вариант с рабочим мах:
[syntax='SQL']
SELECT Таблица.Наименование, Таблица.Стоимость
FROM Таблица
WHERE (((Таблица.Стоимость)=(SELECT Max(Таблица.Стоимость) AS [Max-Стоимость]
FROM Таблица)));
[/syntax]
Но этот вариант покажет все записи, у которых стоимость = максимальной (если их несколько), а вариант chur только один, так что выбирайте

А если, скажем, не в акцессе и допустим случай, если несколько товаров имеют цену = максимальной и нужно их всех вывести?
Препод мне говорил, что решение будет на 10-12 строк и одним селектом не отделаешься.
SELECT TOP 1 стоимость, название
FROM товары
ORDER BY стоимость DESC;
Это решение рабочее, но очень частное. Неплохо бы ещё более общее придумать.

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

Добавлено: 02 июл 2008, 10:25
Vasilisk
Правильно! И режим QBE даёт не какие-то специальные запросы, а просто другой интерфейс для их построения. Сами запросы всегда получаются в виде SQL-строк, вот только предлагают их построить либо вводя текст руками (режим SQL), либо зполняя таблицу (режим QBE). Что во многих сложных случаях проще - скобки, группировка, какая-то экзотическая функция...

Я и предложил этим воспользоваться :) Но, нашему другу, видимо интересно только "сдать". Его не интересует не только SQL, но даже и что именно он сдаёт :) :) :)

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

Добавлено: 02 июл 2008, 13:43
Serge_Bliznykov
FireStar,
&quot писал(а):А если, скажем, не в акцессе и допустим случай, если несколько товаров имеют цену = максимальной и нужно их всех вывести?
ничего не понимаю.... Так в этом случае вариант Игорь Акопян из #13 как раз и выведет ВСЕ наименования, у которых цена = максимальной...

&quot писал(а):Препод мне говорил, что решение будет на 10-12 строк и одним селектом не отделаешься.
он не прав! ;-) либо он ошибается, либо он ожидает какое-то другое решение (например, вытягивать на клиента набор данных и там его построчно обрабатывать)... а может 10-12 строк получится вместе с обвязкой (открыть БД, выполнит запрос, отобразить результат...)

общайтесь с преподом. сделайте так, как Вам написали, пусть он Вам объяснит, чем его это решение не устраивает... сильно мало строчек - это не аргумент. А то, что это сделано одним select'ом, так это только плюс - SQL это очень мощная штука...