powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос еще один
12 сообщений из 12, страница 1 из 1
Запрос еще один
    #32304448
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день
Опять запрос.
В MS SQL это вроде
Код: plaintext
SELECT cityid FROM (select cityid FROM tbcity) as aa

а как в фоксе такая конструкция? Опять нужно одним запросом
Спасибо
...
Рейтинг: 0 / 0
Запрос еще один
    #32304477
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Издеваишьси? :)
Код: plaintext
select cityid FROM tbcity

А если серьезно, то такая конструкция не поддерживается. Вполне возможно, что можно и одним запросом, только твои подробности неизвестны.
...
Рейтинг: 0 / 0
Запрос еще один
    #32304487
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>NNN
не издеваюсь. Надо это, то что ниже, в один запрос.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT  tbSubregion.subName, tbBudget.bdgDate as DateD, ProductID as ProductID, SUM(tbBudget.bdgAmount) AS bdgAmount, SUM(tbBudget.bdgSumUSD) AS bdgSumUSD,  0  AS slsAmount,  0  AS slsSumUSD;
FROM  tbSubregion LEFT OUTER JOIN;
tbBudget ON tbSubregion.CityID = tbBudget.CityID;
GROUP BY tbSubregion.subName, tbBudget.bdgDate, ProductID ;
UNION ALL;
SELECT tbSubregion.subName,  tbSales.slsDate as DateD, ProductID as ProductID,  0  AS bdgAmount,  0  AS bdgSumUSD, SUM(tbSales.slsAmount) AS slsAmount, SUM(tbSales.slsSumUSD) AS slsSumUSD;
FROM  tbCity INNER JOIN;
tbSubregion ON tbCity.SubregID = tbSubregion.SubregID LEFT OUTER JOIN;
tbSales ON tbCity.CityID = tbSales.CityID;
GROUP BY tbSubregion.subName, tbSales.slsDate, ProductID INTO CURSOR aa

SELECT subName, DateD, Prdname, SUM(bdgAmount) AS bdgAmount, SUM(bdgSumUSD) AS bdgSumUSD, SUM(slsAmount) AS slsAmount, SUM(slsSumUSD) AS slsSumUSD;
FROM aa INNER JOIN tbproduct ON aa.productid=tbproduct.productid;  
GROUP BY subName, DateD, Prdname
...
Рейтинг: 0 / 0
Запрос еще один
    #32304543
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно ли у Вашей программе использование view?
Попробуйте создать view на основе первого select-а, во втором выбирать данные из этого view.
...
Рейтинг: 0 / 0
Запрос еще один
    #32304580
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vklepko
С view все понятно.
...
Рейтинг: 0 / 0
Запрос еще один
    #32304636
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2paco

А через FULL OUTER JOIN не получится?
...
Рейтинг: 0 / 0
Запрос еще один
    #32307652
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять вернусь к запросу

>vklepko
Вроде view не поддерживает UNION ALL, или я не прав. Хотя и это было бы не плохо
...
Рейтинг: 0 / 0
Запрос еще один
    #32307696
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UNION ALL во VIEW поддерживается
Не знаю можно ли создать такой view непосредственно в дизайнере в VFP8.0. В 6.0 дизайнер таких возможностей не предоставлял.

Можно создать программно:
CREATE SQL VIEW myView AS;
SELECT.....
...
Рейтинг: 0 / 0
Запрос еще один
    #32307933
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vklepko
Да так получилось. Спасибо.
Осталась одна проблема: как в этой вьюхе указать тип поля, так как 0.00 он берет как numeric, а мне нужно float, в Crystal Reporte потом дает ошибку по типу. Можно как нибудь явно указать тип поля?
[SRC]CREATE SQL VIEW vwBudgSales AS;
SELECT Tbsales.slsdate as DateD, Tbcity.subregid as SubregID, Tbsales.productid as ProductID, 0.00 as bdgamount, 0.00 as bdgsumusd,;
SUM(Tbsales.slsamount) as slsamount, SUM(Tbsales.slssumusd) as slssumusd;
FROM ;
tbsales ;
INNER JOIN tbcity ;
ON Tbsales.cityid = Tbcity.cityid;
GROUP BY Tbsales.slsdate, Tbcity.subregid, Tbsales.productid;
union all;
SELECT Tbbudget.bdgdate as DateD, Tbsubregion.subregid as SubregID, Tbbudget.productid as ProductID,;
SUM(Tbbudget.bdgamount) as bdgamount, SUM(Tbbudget.bdgsumusd) as bdgsumusd, 0.00 as slsamount, 0.00 as slssumusd;
FROM ;
tbbudget ;
INNER JOIN tbsubregion ;
ON Tbbudget.cityid = Tbsubregion.cityid;
GROUP BY Tbbudget.bdgdate, Tbsubregion.subregid, Tbbudget.productid;SRC]
...
Рейтинг: 0 / 0
Запрос еще один
    #32307980
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставил вместо 0.00 00000000000.00000000000. Все работает, но как то не культурно.
...
Рейтинг: 0 / 0
Запрос еще один
    #32307992
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте
Код: plaintext
1.
2.
3.
=dbSetProp( "vwBudgSales.bdgamount" , "FIELD" , "DataType" , "F" )
=dbSetProp( "vwBudgSales.bdgsumusd" , "FIELD" , "DataType" , "F" )
=dbSetProp( "vwBudgSales.slsamount" , "FIELD" , "DataType" , "F" )
=dbSetProp( "vwBudgSales.slssumusd" , "FIELD" , "DataType" , "F" )
или если тип money
Код: plaintext
1.
2.
3.
=dbSetProp( "vwBudgSales.bdgamount" , "FIELD" , "DataType" , "Y" )
=dbSetProp( "vwBudgSales.bdgsumusd" , "FIELD" , "DataType" , "Y" )
=dbSetProp( "vwBudgSales.slsamount" , "FIELD" , "DataType" , "Y" )
=dbSetProp( "vwBudgSales.slssumusd" , "FIELD" , "DataType" , "Y" )
...
Рейтинг: 0 / 0
Запрос еще один
    #32308452
pako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vklepko
Помогло. Спасибо. Только тип 'B'.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос еще один
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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