0
- 20.09.2012 - 09:34
|
Здравствуйте! Есть запрос ТекстЗапроса = "SELECT | КоличествоВ as КоличествоВ, | Количество as Количество, | Номенклатура as Номенклатура |FROM |(SELECT | РегПродажа.SP2227 as КоличествоВ, | РегПродажа.SP2224 as Количество, | СпрНомен.DESCR as Номенклатура |FROM | _RA2228Old РегПродажа |Left Join _SC156Old СпрНомен ON РегПродажа.SP2218 = СпрНомен.ID | |UNION ALL | |SELECT | SUM(РегПродажа01.SP2227) as КоличествоВ, | SUM(РегПродажа01.SP2224) as Количество, | СпрНомен01.DESCR as Номенклатура |FROM | _RA2228Old РегПродажа01 |Left Join _SC156Old СпрНомен01 ON РегПродажа01.SP2218 = СпрНомен01.ID) Итоги | |ORDER by Номенклатура"; Выдает State 42000, native 200, message [Microsoft][ODBC Visual FoxPro Driver]Syntax error. По отдельности запросы работают отлично. Проблема вышла из за того, что запрос "SELECT | РегПродажа.SP2227 as КоличествоВ, | РегПродажа.SP2224 as Количество, | СпрНомен.DESCR as Номенклатура |FROM | _RA2228Old РегПродажа |Left Join _SC156Old СпрНомен ON РегПродажа.SP2218 = СпрНомен.ID | |UNION ALL | |SELECT | SUM(РегПродажа01.SP2227) as КоличествоВ, | SUM(РегПродажа01.SP2224) as Количество, | СпрНомен01.DESCR as Номенклатура |FROM | _RA2228Old РегПродажа01 |Left Join _SC156Old СпрНомен01 ON РегПродажа01.SP2218 = СпрНомен01.ID | |ORDER by Номенклатура Не упроядочивается по полю Номенклатура, хотя каждый из запросов, отрабатывает хорошо. Где грабли? | |
1
- 20.09.2012 - 11:30
|
База =СоздатьОбъект("OLEDBData"); Соединение = "Provider=VFPOLEDB.1; |Data Source=" + КаталогИБ() +"; |Mode=Read; |Extended Properties=""; |User ID=""; |Password=""; |Mask Password=False; |Collating Sequence=RUSSIAN; |DSN="""; Рез = База.Соединение(Соединение); RS = База.СоздатьКоманду(); ТекстЗапроса = "SELECT | РегПродажа.SP2227 as КоличествоВ, | РегПродажа.SP2224 as Количество, | СпрНомен.DESCR as Номенклатура |FROM | _RA2228Old as РегПродажа |Left Join _SC156Old as СпрНомен ON РегПродажа.SP2218 = СпрНомен.ID | |UNION ALL | |SELECT | SUM(РегПродажа01.SP2227) as КоличествоВ, | SUM(РегПродажа01.SP2224) as Количество, | СпрНомен01.DESCR as Номенклатура |FROM | _RA2228Old as РегПродажа01 |Left Join _SC156Old as СпрНомен01 ON РегПродажа01.SP2218 = СпрНомен01.ID |GROUP by Номенклатура |ORDER by Номенклатура,Количество DESC,КоличествоВ DESC"; До этого работал с драйвером Фокса База =СоздатьОбъект("ODBCDataBase"); Соединение = "DRIVER=Microsoft Visual FoxPro Driver; |Deleted=Yes; |Null=Yes; |Collate=RUSSIAN; |Exclusive=No; |Collating Sequence=RUSSIAN; |SourceType=DBF; |SourceDB="+КаталогИБ(); Рез = База.Соединение(Соединение); RS = СоздатьОбъект("ODBCRecordset"); RS.УстБД(База); Он UNION ALL-ные запросы упорядочивать в таком виде не умеет | |
2
- 20.09.2012 - 11:37
| Работает прям не нарадуюсь | |
3
- 20.09.2012 - 11:53
|
надо 2 запроса которые в UNION обернуть простым запросом выборки полей и сортировать по этим полям типа такого SELECT Рег.Номенклатура |SUM (Рег.Сумма) ]FROM (тут твой запрос c UNION) Рег |GROUP BY Рег.Номенклатура |ORDER BY Рег.Номенклатура Группировать можно и внутри каждого запроса | |
4
- 20.09.2012 - 11:54
| (2) и чё быстрее работает | |
| Интернет-форум Краснодарского края и Краснодара |