Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.013 c
2-1134384927
De1uxe
2005-12-12 13:55
2005.12.25
Работа с битовыми образами


14-1133329515
Rentgen
2005-11-30 08:45
2005.12.25
InTouch


3-1131039448
RDA
2005-11-03 20:37
2005.12.25
Не правильная сортировка для украинского языка


14-1133189145
Yegorchic
2005-11-28 17:45
2005.12.25
Соединить SonyEricson с PocketPC (Asus) через ИК-порт


4-1130425689
Deren
2005-10-27 19:08
2005.12.25
Получить все Хенделы дочерных окон...?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский