Форум: "Базы";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизНе работает запрос.. Найти похожие ветки
← →
SergP. (2005-11-02 13:35) [0]Год назад спрашивал здесь, но толком никто не ответил...
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 запросы отрабатывают без ошибок, но таблиц не создают...
← →
Desdechado © (2005-11-02 13:38) [1]> Год назад спрашивал
Целый год ждал ответа? Или безуспешно искал решение?
> Причем не работает даже в VFP
Значит, VFP не поддерживает подзапросы такого вида
← →
SergP. (2005-11-02 13:55) [2]
> Значит, VFP не поддерживает подзапросы такого вида
ПРосто странно то что JOIN он поддерживает, вложенные запросы поддерживает, а JOIN с вложенным запросом не хочет...
Да и еще...
Запрос типа
select * from table1 .... into dbf table2
в VFP работает нормально, а Provider=VFPOLEDB.1 отрабатывает без ошибок, но таблица table2 не создается...
Просто я думал сделать подобным образом, т.е. вложенные подзапросы выполнить отдельно с сохранением результатов в таблицы? А потом выполнить основной запрос уже используя эти таблицы...
← →
Desdechado © (2005-11-02 15:34) [3]> ПРосто странно
В жизни много странностей. В документации что сказано по поводу подзапросов в LEFT JOIN?
← →
sniknik © (2005-11-02 16:22) [4]> Запрос типа
> 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
← →
SergP. (2005-11-02 18:06) [5]Странно...
Не могу понять... Если выполнять отдельно подзапросы и потом основной запрос 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
← →
SergP. (2005-11-02 18:12) [6]Выдает: Syntax error и ничего сделать не могу...
2 sniknik Можно прислать тебе сам запрос, и используемые таблицы, чтобы ты глянул? Естественно если будет возможность...
Файлики небольшие....
← →
sniknik © (2005-11-02 18:21) [7]> Но у меня VFP7.0 SP1
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en
← →
sniknik © (2005-11-02 18:22) [8]> 2 sniknik Можно прислать тебе сам запрос, и используемые таблицы, чтобы ты глянул? Естественно если будет
> возможность...
присылай, но посмотрю только поздно вечером.
← →
SergP. (2005-11-02 18:42) [9]Отправил...
← →
sniknik © (2005-11-02 21:10) [10]абсолютно ничего не делал, у меня запрос работает "as is" присланный... в общем ставь из ссылки новый провайдер и не парься.
← →
SergP © (2005-11-02 22:55) [11]Скачал. Поставил. Работает...
Правда обнаружился еще один запрос, который со старым провайдером работал, а с новым не хотел. Но удалось подправить его...
← →
SergP. (2005-11-03 13:24) [12]
> в общем ставь из ссылки новый провайдер и не парься.
Если бы кто-нить подсказал как его поставить под 98 и МЕ...
А то под XP и WIN2K ставится, а под 98 и МЕ не хочет...(начинает требовать чтобы на винду сервиспак поставили)
← →
sniknik © (2005-11-03 14:19) [13]> начинает требовать чтобы на винду сервиспак поставили
со ссылки
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.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.132 c