Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос к DBF через VFP ODBC драйвер / 11 сообщений из 11, страница 1 из 1
21.02.2006, 12:44
    #33558049
firerer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
создам новую тему:
1)
Select
Reg.sp478 As Nomen,
Reg.Period As Period,
SUM(Reg.sp479 - RegOst.sp101) As Necessary
From
RG480 As Reg
Left join
RG98 As RegOst On RegOst.sp99 = Reg.sp478
Left join
sc60 As Nom On Nom.Id = Reg.sp478
Where
(Reg.sp479 - RegOst.sp101 > 0)
AND
Reg.Period = {^2006-02-01}
AND
RegOst.Period = {^2006-02-01}
Group by
Nomen

При попытке вставить в условие вместо (Reg.sp479 - RegOst.sp101 > 0)
функцию SUM(Reg.sp479 - RegOst.sp101) > 0 ругается на отсутсвие файла sum.prg (я так понимаю файл с описанием самой функции?)
Есть ли возможность указать так:
Where
(Necessary >0)
?
и если да - то как?

2) существует ли возможность создать временную таблицу и к ней делать запрос?
...
Рейтинг: 0 / 0
21.02.2006, 13:02
    #33558116
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
1. Чем не нравиться запись с в виде (Reg.sp479 - RegOst.sp101 > 0)?
SUM в SELECT, как и остальные агрегатные функции, обрабатывают набор записей, удовлетворяющих условию в Where. То есть условие в Where проверяется для каждой записи. Какой смысл считать SUM() для одной записи?
Далее: выражения в списке полей Select вычисляются, опять же, для записей,
удовлетворяющих условию в Where. То есть условие в Where проверяется для каждой записи. Как проверить условие с выражением, которе еще не вычислялось и для которого, собственно, идет проверка необходимости его вычисления?

2. Select * from table into cursor YourCursor
Но в 9-ке можно обойтись ds,jhrjq из выборки: select * from (select * from YourTable) TableAlias
...
Рейтинг: 0 / 0
21.02.2006, 13:15
    #33558166
DIMM@
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
C функ. SUM у тебя все нормально(читай на нее help).
Мне кажется ты неккоректно ставиш условия выбора. Это условие(с Sum) не зависит от того где находится указатель записи при выборке, оно как бы общее. Загоняй лучше свой Select под If,его условием и будет проверка больше ли сумма нуля, и если да то Select. А в селекте выкидывай это условие

НУ и как писали Sergey, или так дописывай INTO TABLE с:\mytable - сохранит тебе выборку в указанном файде и месте
...
Рейтинг: 0 / 0
21.02.2006, 13:29
    #33558212
firerer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
DIMM@Cдописывай INTO TABLE с:\mytable - сохранит тебе выборку в указанном файде и месте

где дописать??? где емае??? ща допишу :)) надо позарез :))
...
Рейтинг: 0 / 0
21.02.2006, 13:44
    #33558263
firerer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
Sergey Sizov.1. Чем не нравиться запись с в виде (Reg.sp479 - RegOst.sp101 > 0)?
SUM в SELECT, как и остальные агрегатные функции, обрабатывают набор записей, удовлетворяющих условию в Where. То есть условие в Where проверяется для каждой записи. Какой смысл считать SUM() для одной записи?
Далее: выражения в списке полей Select вычисляются, опять же, для записей,
удовлетворяющих условию в Where. То есть условие в Where проверяется для каждой записи. Как проверить условие с выражением, которе еще не вычислялось и для которого, собственно, идет проверка необходимости его вычисления?

2. Select * from table into cursor YourCursor
Но в 9-ке можно обойтись ds,jhrjq из выборки: select * from (select * from YourTable) TableAlias

спасибо. очень подробно и исчерпывающе. действительно лучше сразу задачу описАть. :)
вопщем надо получить набор записей сгруппированных по Nomen, Причем нужно получить поле1 = таб1.число - таб2.число, так чтобы сум(Поле1) > 0. остальные выкинуть нафек. причем просуммировать все записи с одинаковым Nomen в поле1.
фух. звиняйте если сумбурно.
...
Рейтинг: 0 / 0
21.02.2006, 17:27
    #33559080
otorva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
firerer

При попытке вставить в условие вместо (Reg.sp479 - RegOst.sp101 > 0)
функцию SUM(Reg.sp479 - RegOst.sp101) > 0 ругается на отсутсвие файла sum.prg (я так понимаю файл с описанием самой функции?)
Есть ли возможность указать так:
Where
(Necessary >0)


Наверное, выражение с SUM() следует поместить во фразе HAVING:

GROUP BY Nomenc HAVING SUM(Reg.sp479 - RegOst.sp101) > 0
...
Рейтинг: 0 / 0
21.02.2006, 18:40
    #33559252
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
otorvaНаверное, выражение с SUM() следует поместить во фразе HAVING:

GROUP BY Nomenc HAVING SUM(Reg.sp479 - RegOst.sp101) > 0

И что здесь будет суммироваться? Какие записи? По каким критериям они будут отбираться?
...
Рейтинг: 0 / 0
21.02.2006, 18:54
    #33559276
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
2 firerer:

Что за конфа? Стандартная непеределанная, стандартная переделанная, самописная? Кусочками использованных в запросе таблиц поделиться можешь?
...
Рейтинг: 0 / 0
22.02.2006, 09:16
    #33559857
DIMM@
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
firererПричем нужно получить поле1 = таб1.число - таб2.число, так чтобы сум(Поле1) > 0. остальные выкинуть нафек.
Что ты имеешь ввиду? Т.е. все равно какие записи брать, лишь бы сумма >0 была? Или нужно выбирать по порядку до тех пор пока сумма >0? Или нужно выбрать все положительные разности?
...
Рейтинг: 0 / 0
22.02.2006, 10:19
    #33560001
firerer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
Sergey Sizov.2 firerer:

Что за конфа? Стандартная непеределанная, стандартная переделанная, самописная? Кусочками использованных в запросе таблиц поделиться можешь?

самописка.
есть два регистра: заявки и остатки.
регистр заявки: измерение номенклатура, ресурс количество
Регистр остатки: измерения фирма, склад, номенклатура, ресурс количество.
надо выбрать номенклатуру которая есть в заявках > 0, и вычесть из нее остаток по этой номенклатуре. разница: количество которое необходимо докупить - совершенно олдовая схема - но рабочая. обычный запрос - долго.. пока все пересчитает-замаешся...а информация нужна оперативно. прямой запрос решает проблему оперативности, но накладывает ограничения связаные с невозможностью использования группировок и вложенных запросов. группировки не поддерживаюца объектом вывода: табличное поле, вложенные запросы - 6 драйвером фокса.
вот в таком кикозе я нахожусь:))
...
Рейтинг: 0 / 0
22.02.2006, 10:22
    #33560016
firerer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF через VFP ODBC драйвер
а. и плюсь выводить надо только те поля где разница между заявкой и остатком больше 0.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос к DBF через VFP ODBC драйвер / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]