Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как правильно сформировать SQL запрос / 10 сообщений из 10, страница 1 из 1
21.08.2003, 13:35
    #32243210
slz
slz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сформировать SQL запрос
Здравствуйте.

Неодходимо получить агрегатную функцию от другой агрегатной функции, как лучше сделать?

Т.е. для примера таблица товаров:

Наименование
Кол-во

Надо найти какого наименования продано больше.

В результате запроса должна вернуться запись (или несколько с одинакой суммой по кол-ву) для определенного наименования.

Т.е. надо получить MAX(SUM(кол-во)) GROUP BY наименование.

Как реализовать такой запрос в VFP?

Заранее благодарен.
...
Рейтинг: 0 / 0
21.08.2003, 14:03
    #32243262
АлександрК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сформировать SQL запрос
Примерно так:

SELECT Наименование, SUM(Кол_во) AS Кол_во ;
FROM ТаблицаТоваров ;
GROUP BY Наименование ORDER BY Кол_во DESC ;
WHERE Кол_во # (0) INTO CURSOR ИмяКурсора
...
Рейтинг: 0 / 0
21.08.2003, 14:07
    #32243268
slz
slz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сформировать SQL запрос
Так Вы получите таблицу, а не одну запись или несколько с одинаковыми суммами.
...
Рейтинг: 0 / 0
21.08.2003, 14:50
    #32243350
АлександрК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сформировать SQL запрос
Тогда, если я правильно понял, к указанному выше запросу добавляем еще один

SELECT MAX(Кол_во) AS МахКол_во FROM ИмяКурсора

Этот запрос вернет строку с наибольшим кол-вом.
При попытке написать в запросе MAX(SUM(Кол_во)) фокс ругнулся на отсутствие ф-ции SUM. Можно, наверное как-то это сделать одним запросом, но проще, по-моему, двумя.
...
Рейтинг: 0 / 0
21.08.2003, 14:54
    #32243362
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сформировать SQL запрос
Если нужна именно одна запись, то достачно использовать TOP 1

SELECT TOP 1 ;
Наименование, SUM(Кол_во) AS Кол_во ;
FROM ТаблицаТоваров ;
GROUP BY Наименование ;
ORDER BY Кол_во DESC

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

Впрочем, даже если удасться выкрутится и составить навороченный запрос с подзапросами, скорость выполнения такого запроса в FoxPro будет намного ниже скорости выполнения нескольких последовательных запросов.
...
Рейтинг: 0 / 0
21.08.2003, 14:57
    #32243364
slz
slz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сформировать SQL запрос
А подзапрос, в VFP, можно в операторе HAVING написать?
...
Рейтинг: 0 / 0
21.08.2003, 15:11
    #32243399
АлександрК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сформировать SQL запрос
А вы поробуйте, а потом расскажите.
...
Рейтинг: 0 / 0
21.08.2003, 15:44
    #32243491
slz
slz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сформировать SQL запрос
Попробовал.
В WHERE работат, нет проблем, а в HAVING работает только с фиксированным параметром, а на подзапрос матерится. Конечно может, что не так пишу.
Вот и хотел узнать у народа, а могет ли VFP вобще это?
...
Рейтинг: 0 / 0
21.08.2003, 17:02
    #32243682
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сформировать SQL запрос
Насколько я в курсе, подзапросы в FoxPro можно ставить только в директиву WHERE, да и то, в строго определенном синтаксисе типа IN, ANY, SOME.

В директиве HAVING допустимы только собственно аггрегатные функции и константы.
...
Рейтинг: 0 / 0
22.08.2003, 07:00
    #32244015
slz
slz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сформировать SQL запрос
Спасибо, уже сам понял.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как правильно сформировать SQL запрос / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]