|
|
|
Запрос к DBF через VFP ODBC драйвер
|
|||
|---|---|---|---|
|
#18+
создам новую тему: 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) существует ли возможность создать временную таблицу и к ней делать запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 12:44 |
|
||
|
Запрос к DBF через VFP ODBC драйвер
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 13:02 |
|
||
|
Запрос к DBF через VFP ODBC драйвер
|
|||
|---|---|---|---|
|
#18+
C функ. SUM у тебя все нормально(читай на нее help). Мне кажется ты неккоректно ставиш условия выбора. Это условие(с Sum) не зависит от того где находится указатель записи при выборке, оно как бы общее. Загоняй лучше свой Select под If,его условием и будет проверка больше ли сумма нуля, и если да то Select. А в селекте выкидывай это условие НУ и как писали Sergey, или так дописывай INTO TABLE с:\mytable - сохранит тебе выборку в указанном файде и месте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 13:15 |
|
||
|
Запрос к DBF через VFP ODBC драйвер
|
|||
|---|---|---|---|
|
#18+
DIMM@Cдописывай INTO TABLE с:\mytable - сохранит тебе выборку в указанном файде и месте где дописать??? где емае??? ща допишу :)) надо позарез :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 13:29 |
|
||
|
Запрос к DBF через VFP ODBC драйвер
|
|||
|---|---|---|---|
|
#18+
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. фух. звиняйте если сумбурно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 13:44 |
|
||
|
Запрос к DBF через VFP ODBC драйвер
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 17:27 |
|
||
|
Запрос к DBF через VFP ODBC драйвер
|
|||
|---|---|---|---|
|
#18+
otorvaНаверное, выражение с SUM() следует поместить во фразе HAVING: GROUP BY Nomenc HAVING SUM(Reg.sp479 - RegOst.sp101) > 0 И что здесь будет суммироваться? Какие записи? По каким критериям они будут отбираться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 18:40 |
|
||
|
Запрос к DBF через VFP ODBC драйвер
|
|||
|---|---|---|---|
|
#18+
2 firerer: Что за конфа? Стандартная непеределанная, стандартная переделанная, самописная? Кусочками использованных в запросе таблиц поделиться можешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 18:54 |
|
||
|
Запрос к DBF через VFP ODBC драйвер
|
|||
|---|---|---|---|
|
#18+
firererПричем нужно получить поле1 = таб1.число - таб2.число, так чтобы сум(Поле1) > 0. остальные выкинуть нафек. Что ты имеешь ввиду? Т.е. все равно какие записи брать, лишь бы сумма >0 была? Или нужно выбирать по порядку до тех пор пока сумма >0? Или нужно выбрать все положительные разности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2006, 09:16 |
|
||
|
Запрос к DBF через VFP ODBC драйвер
|
|||
|---|---|---|---|
|
#18+
Sergey Sizov.2 firerer: Что за конфа? Стандартная непеределанная, стандартная переделанная, самописная? Кусочками использованных в запросе таблиц поделиться можешь? самописка. есть два регистра: заявки и остатки. регистр заявки: измерение номенклатура, ресурс количество Регистр остатки: измерения фирма, склад, номенклатура, ресурс количество. надо выбрать номенклатуру которая есть в заявках > 0, и вычесть из нее остаток по этой номенклатуре. разница: количество которое необходимо докупить - совершенно олдовая схема - но рабочая. обычный запрос - долго.. пока все пересчитает-замаешся...а информация нужна оперативно. прямой запрос решает проблему оперативности, но накладывает ограничения связаные с невозможностью использования группировок и вложенных запросов. группировки не поддерживаюца объектом вывода: табличное поле, вложенные запросы - 6 драйвером фокса. вот в таком кикозе я нахожусь:)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2006, 10:19 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33559252&tid=1592278]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 441ms |

| 0 / 0 |
