![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не работает запрос.. [D6, dBase, FoxPro]
SergP. © (2005-11-02 13:35:00)Год назад спрашивал здесь, но толком никто не ответил...
ADO, Provider=VFPOLEDB.1
Такой запрос работает...
zsql:='select podat.p, podat.name, nvl(a.'+fplan+',0)+nvl(b.'+fplan+',0) as zplan,nvl(a.'+ffakt+',0)+nvl(b.'+ffakt+',0) as zfakt, a.'+fplan+' as dplan, a.'+ffakt+' as dfakt, b.'+fplan+' as mplan, b.'+ffakt+' as mfakt '
+'from podat '
+'left join '+base+' a on (podat.p=a.p) and (a.vb=30) and (a.r='+inttostr(rajon)+' or a.r=0) '
+'left join '+base+' b on (podat.p=b.p) and (b.vb=50) and (b.r='+inttostr(rajon)+' or a.r=0) '
+'order by podat.ord';
А вот такой не хочет...
vb30:='select p,sum('+fplan+') as '+fplan+',sum('+ffakt+') as '+ffakt+' from '+base+' where vb=30 group by p ';
vb50:='select p,sum('+fplan+') as '+fplan+',sum('+ffakt+') as '+ffakt+' from '+base+' where vb=50 group by p ';
zsql:='select podat.p, podat.name, nvl(a.'+fplan+',0)+nvl(b.'+fplan+',0) as zplan,nvl(a.'+ffakt+',0)+nvl(b.'+ffakt+',0) as zfakt, a.'+fplan+' as dplan, a.'+ffakt+' as dfakt, b.'+fplan+' as mplan, b.'+ffakt+' as mfakt '
+'from podat '
+'left join ('+vb30+') a on (podat.p=a.p) '
+'left join ('+vb50+') b on (podat.p=b.p) '
+'order by podat.ord';
т.е. в переменной zsql мы имеем следующее...
select podat.p, podat.name, nvl(a.Plm,0)+nvl(b.Plm,0) as zplan,nvl(a.Mon,0)+nvl(b.Mon,0) as zfakt, a.Plm as dplan, a.Mon as dfakt, b.Plm as mplan, b.Mon as mfakt from podat left join (select p,sum(Plm) as Plm,sum(Mon) as Mon from Z5110103 where vb=30 group by p ) a on (podat.p=a.p) left join (select p,sum(Plm) as Plm,sum(Mon) as Mon from Z5110103 where vb=50 group by p ) b on (podat.p=b.p) order by podat.ord
Причем не работает даже в VFP. Почему?
Вроде бы все правильно...
Пытался вывести результаты вложеных запросов в отдельную таблицу, (типа разбить запрос на 3)
В VFP такое уже работает, а вот в проге использующей Provider=VFPOLEDB.1 запросы отрабатывают без ошибок, но таблиц не создают...
sniknik (2005-11-03 14:19:00) [1]> начинает требовать чтобы на винду сервиспак поставили
со ссылки
System Requirements
* Supported Operating Systems:Windows 2000 Service Pack 3; Windows 98; Windows ME; Windows Server 2003; Windows XP
Processor: Pentium class
RAM: 64 MB (recommended: 128 MB or higher)
Available Hard Disk Space: 2 MB for minimum install, 4 MB for full install
Software Microsoft Data Access Components (MDAC) version 2.6 or higher
Note: Installation on Windows NT 4.0 is not supported.
SergP. (2005-11-03 13:24:00) [2]
> в общем ставь из ссылки новый провайдер и не парься.
Если бы кто-нить подсказал как его поставить под 98 и МЕ...
А то под XP и WIN2K ставится, а под 98 и МЕ не хочет...(начинает требовать чтобы на винду сервиспак поставили)
SergP (2005-11-02 22:55:00) [3]Скачал. Поставил. Работает...
Правда обнаружился еще один запрос, который со старым провайдером работал, а с новым не хотел. Но удалось подправить его...
sniknik (2005-11-02 21:10:00) [4]абсолютно ничего не делал, у меня запрос работает "as is" присланный... в общем ставь из ссылки новый провайдер и не парься.
SergP. (2005-11-02 18:42:00) [5]Отправил...
sniknik (2005-11-02 18:22:00) [6]> 2 sniknik Можно прислать тебе сам запрос, и используемые таблицы, чтобы ты глянул? Естественно если будет
> возможность...
присылай, но посмотрю только поздно вечером.
sniknik (2005-11-02 18:21:00) [7]> Но у меня VFP7.0 SP1
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en
SergP. (2005-11-02 18:12:00) [8]Выдает: Syntax error и ничего сделать не могу...
2 sniknik Можно прислать тебе сам запрос, и используемые таблицы, чтобы ты глянул? Естественно если будет возможность...
Файлики небольшие....
SergP. (2005-11-02 18:06:00) [9]Странно...
Не могу понять... Если выполнять отдельно подзапросы и потом основной запрос d VFP то все работает....
select p,sum(Plm) as Plm,sum(Mon) as Mon from Z5110103 where vb=30 group by p into dbf vb30
select p,sum(Plm) as Plm,sum(Mon) as Mon from Z5110103 where vb=50 group by p into dbf vb50
select podat.p, podat.name, nvl(a.Plm,0)+nvl(b.Plm,0) as zplan,nvl(a.Mon,0)+nvl(b.Mon,0) as zfakt, a.Plm as dplan, a.Mon as dfakt, b.Plm as mplan, b.Mon as mfakt from podat left join vb30 a on (podat.p=a.p) left join vb50 b on (podat.p=b.p) order by podat.ord
Но
select podat.p, podat.name, nvl(a.Plm,0)+nvl(b.Plm,0) as zplan,nvl(a.Mon,0)+nvl(b.Mon,0) as zfakt, a.Plm as dplan, a.Mon as dfakt, b.Plm as mplan, b.Mon as mfakt from podat left join (select p,sum(Plm) as Plm,sum(Mon) as Mon from Z5110103 where vb=30 group by p ) a on (podat.p=a.p) left join (select p,sum(Plm) as Plm,sum(Mon) as Mon from Z5110103 where vb=50 group by p ) b on (podat.p=b.p) order by podat.ord
не хочет работать, хоть убей...
Может в VFP проблема? Но у меня VFP7.0 SP1
sniknik (2005-11-02 16:22:00) [10]> Запрос типа
> select * from table1 .... into dbf table2
> в VFP работает нормально, а Provider=VFPOLEDB.1 отрабатывает без ошибок, но таблица table2 не создается...
дело видимо в точках (...) в том что за ними скрыто
попробовал простой, и с обьеденением и обьеденение с подзапросом ... создается.
SELECT * FROM test1 into dbf test2
SELECT * FROM test1 t LEFT JOIN test2 s ON t.id = s.id into dbf test3
SELECT * FROM test1 t LEFT JOIN (SELECT * FROM test2) s ON t.id = s.id into dbf test3
все работают.
конект туда же
Provider=VFPOLEDB.1;Data Source=D:\;Password="";Collating Sequence=MACHINE
Desdechado (2005-11-02 15:34:00) [11]> ПРосто странно
В жизни много странностей. В документации что сказано по поводу подзапросов в LEFT JOIN?
SergP. (2005-11-02 13:55:00) [12]
> Значит, VFP не поддерживает подзапросы такого вида
ПРосто странно то что JOIN он поддерживает, вложенные запросы поддерживает, а JOIN с вложенным запросом не хочет...
Да и еще...
Запрос типа
select * from table1 .... into dbf table2
в VFP работает нормально, а Provider=VFPOLEDB.1 отрабатывает без ошибок, но таблица table2 не создается...
Просто я думал сделать подобным образом, т.е. вложенные подзапросы выполнить отдельно с сохранением результатов в таблицы? А потом выполнить основной запрос уже используя эти таблицы...
Desdechado (2005-11-02 13:38:00) [13]> Год назад спрашивал
Целый год ждал ответа? Или безуспешно искал решение?
> Причем не работает даже в VFP
Значит, VFP не поддерживает подзапросы такого вида