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

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

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

Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

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

пробуйте код chur, похоже, что он сделает то, что нужно!
FireStar
Сообщения: 6
Зарегистрирован: 01 июл 2008, 08:55

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

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

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

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

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

Я и предложил этим воспользоваться :) Но, нашему другу, видимо интересно только "сдать". Его не интересует не только SQL, но даже и что именно он сдаёт :) :) :)
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

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

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

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