Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.25;
Скачать: CL | DM;

Вниз

Не работает запрос..   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.037 c
4-1130425689
Deren
2005-10-27 19:08
2005.12.25
Получить все Хенделы дочерных окон...?


2-1134029289
Свой
2005-12-08 11:08
2005.12.25
Tshape и глупенький вопрос:)


14-1133260981
DelphiN!
2005-11-29 13:43
2005.12.25
Одалела зараза!


14-1133363339
oldman
2005-11-30 18:08
2005.12.25
Что является критерием наприкасаемости?


14-1133610447
alex31
2005-12-03 14:47
2005.12.25
HTTP SERVER