Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как в VFP реализовать запрос с подзапросом / 3 сообщений из 3, страница 1 из 1
25.06.2004, 15:53
    #32577783
coolkenga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VFP реализовать запрос с подзапросом
Никто не знает, как в VFP реализовать запрос с подзапросом ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT SQ1.TOTAL_SUM, G.*
FROM G 
INNER JOIN 
(SELECT G.UNZ, G.SUMMA, SUM(IIF(EMPTY(Z.SUMMA),  0 . 00 , Z.SUMMA)) AS TOTAL_SUM
FROM G
LEFT JOIN Z ON G.UNZ = Z.UNZ
GROUP BY G.UNZ, G.SUMMA
HAVING G.SUMMA <> SUM(IIF(EMPTY(Z.SUMMA ),  0 . 00 , Z.SUMMA))
) AS SQ1 ON G.UNZ = SQ1.UNZ

Внутренний подзапрос выполняется, а когда выполняешь все целиком - говорит "Syntax error"
...
Рейтинг: 0 / 0
25.06.2004, 16:09
    #32577833
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VFP реализовать запрос с подзапросом
Правильно говорит. В FoxPro такого сделать нельзя. Надо выполнять запросы по очереди. Сначала подзапрос, как отдельный запрос, а потом основной запрос с результатом первого. Примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT G.UNZ, G.SUMMA, ;
SUM(IIF(EMPTY(Z.SUMMA),  0 . 00 , Z.SUMMA)) AS TOTAL_SUM ;
FROM G ;
LEFT JOIN Z ON G.UNZ = Z.UNZ ;
INTO CURSOR SQ1 NOFILTER ;
GROUP BY G.UNZ, G.SUMMA ;
HAVING G.SUMMA <> SUM(IIF(EMPTY(Z.SUMMA ),  0 . 00 , Z.SUMMA))

SELECT SQ1.TOTAL_SUM, G.* ;
FROM G ;
INNER JOIN SQ1 ON G.UNZ = SQ1.UNZ

USE IN SQ1
...
Рейтинг: 0 / 0
25.06.2004, 20:32
    #32578391
Sjfx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VFP реализовать запрос с подзапросом
> coolkenga
Ничего не усложнил?
из G выбрать строки, summa в которых не равна сумме соотв-х строк в Z, + эту сумму из Z ?
Вот как раз данный случай в фоксе проходит на ура:
Код: plaintext
1.
2.
3.
4.
SET ENGINEBEHAVIOR  70 
SELECT g.*, sum(z.summa) as tot_sum FROM g,z WHERE g.unz=z.unz ;
group by g.unz ;
HAVING g.summa#tot_sum

и почему в исходном запросе группировка ещё и по g.summa? you sure?
в принципе, и её можно влепить, но если g.unz уникально -
смысла в этом нет.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как в VFP реализовать запрос с подзапросом / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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