Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
Возможно ли в Update в качестве выражения использовать запрос? Result - это результирующая таблица в полях CComp и NameComp есть записи в поле InvAbon пустое нужно чтобы оно заполнилось данными из таблицы efir Вот текст запроса: UPDATE Result SET InvAbon = ( SELECT Sum(efir.SDR) FROM Result LEFT JOIN efir ON Result.CComp=efir.OperatorCode GROUP BY Result.CComp, Result.NameComp); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2005, 16:51 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
Можно, но синтаксис не такой. К тому же будет зависить от СУБД. что-то типа следующего: UPDATE Result SET InvAbon = ( SELECT Sum(efir.SDR) FROM efir WHERE Result.CComp=efir.OperatorCode); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2005, 17:28 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
Access при таком запросе выдает сообщение "В операции должен использоваться обновляемый запрос" И естественно не модифицирует записи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 09:58 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
BillingistAccess при таком запросе выдает сообщение "В операции должен использоваться обновляемый запрос" И естественно не модифицирует записипочему бы на форуме акса счастье не поискать? А вообще должно прокатить: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:08 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
adv BillingistAccess при таком запросе выдает сообщение "В операции должен использоваться обновляемый запрос" И естественно не модифицирует записипочему бы на форуме акса счастье не поискать? А вообще должно прокатить: Код: plaintext 1. тормознул, tt->tab. Конечеый вариант: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:19 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
adv блин, совсем плохой Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:22 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
adv adv блин, совсем плохой Код: plaintext 1. 2. 3. Это тоже не работает... сдается мне, что дело не в запросе.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 09:40 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
У меня в аксе похожий запрос работает без проблем. Проверьте, что возвращает ваш селект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 11:39 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
Расскажу подробнее: Есть таблица Result(Comp, CompName, InvComp, InvAbon) она пустая, ключевое поле CComp. В эту таблицу вставляются записи из таблиц Company и ttf следующим запросом: INSERT INTO RESULT ( CComp, NameComp, InvComp ) SELECT COMPANY.OperatorCode, COMPANY.OperatorName, Sum(ttf.CostCCC) FROM COMPANY LEFT JOIN ttf ON COMPANY.OperatorCode=ttf.OperatorCode WHERE (Company.DateEnd Is Null) And Company.OperatorCode Not In ('CCC') GROUP BY COMPANY.OperatorCode, COMPANY.OperatorName; Соответственно записи в поле InvAbon примут значение null Все нормально вставляется... Теперь необходимо заполнить поле InvAbon. Записи берутся из другой таблицы efir Это я как раз пытаюсь сделать вот этим запросом, который дожен модифицировать записи InvAbon (null) на те, которые получатся в результате запроса: UPDATE Result SET InvAbon = ( SELECT Sum(efir.SDR) FROM Result LEFT JOIN efir ON Result.CComp=efir.OperatorCode GROUP BY Result.CComp, Result.NameComp); Скажу еще, что таблицы efir, ttf и company формата Paradox 7 и 4, я открыл их через Access. А таблица Result Access формата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 11:51 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
BillingistРасскажу подробнее ... Теперь необходимо заполнить поле InvAbon. Записи берутся из другой таблицы efir Это я как раз пытаюсь сделать вот этим запросом, который дожен модифицировать записи InvAbon (null) на те, которые получатся в результате запроса: UPDATE Result SET InvAbon = ( SELECT Sum(efir.SDR) FROM Result LEFT JOIN efir ON Result.CComp=efir.OperatorCode GROUP BY Result.CComp, Result.NameComp); Ваш селект возвратит не более одной записи (что я и просил посмотреть). Даже если у вас всё заработало бы в том виде, который есть, в поле InvAbon для всех записей было бы внесено одно и то же значение. Есть большое подозрение, что ваш синтаксис в аксе не прокатит. Если нужно вносить именно одинаковые значения, то обратите внимание на мой - он работает - проверено. Если разные, что скорее всего, придётся ещё более подробно уточнять задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 13:28 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
Ваш я тоже конечно же попробывал, не получается таже самая ошибка, что и у меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 14:00 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
Блин. Я пробовал без группировки. С груповыми операциями у меня тоже не получается. Извините, что так долго парил мозг. Можно сделать в два действия через vba. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 16:27 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
А нельзя ли запросом на "выборку" выбрать (без инсертов и апдейтов), просто Селектом, вот эту задачу какую я привел. Я думал думал не додумал... Запрос вот такого типа подвисает систему: SELECT Company.OperatorCode, Company.OperatorName, SUM( Efirdtl.SDR ), SUM( ttf.CostCCC ) FROM "COMPANY.DB" Company LEFT OUTER JOIN "efirdtl.DB" Efirdtl ON (Company.OperatorCode = Efirdtl.OperatorCode) LEFT OUTER JOIN "ttf.db" ttf ON (Company.OperatorCode = ttf.OperatorCode) WHERE (Company.DateEnd IS NULL) AND Company.OperatorCode NOT IN ('CCC') GROUP BY Company.OperatorCode, Company.OperatorName ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 17:12 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
а как вы открыли таблицы - через связь? Просто не разу с парадоксовскими таблицами дело не имел. Почему их названия в кавычках? А так начните создавать запрос постепенно усложняя и найдите место, где он начинает вешать систему. выборка из простого соединения 2х, потом 3х таблиц; добавить условие группировку итоговые функции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 17:30 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
Таблицы открыты через компонент TQuery С++ Builder именно в этом запросе, также я пробывал их открывать через ACCESS. Связи как вы видите я устанавливаю "внешние" в самом запросе. Если связывать по две таблицы: допустим Company и Efirdtl или Company и ttf, то все работает. Также если убрать SUM(Efirdtl.SDR) и SUM(ttf.SDR) и GROUP BY соответственно, а оставить просто SELECT Company.OperatorCode, Company.OperatorName, Efirdtl.SDR , ttf.CostCCC и оставить такую же связь то запрос сработает но не корректно, будет много дублей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 18:01 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
если проблема только в дублях, то select distinct ... или группировка по всем полям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 11:31 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
Задача решена 3 - мя запросами!!!! Без INSERT и UPDATE в связки с SELECT !!! Сейчас выложу решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 15:35 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
Итак: Нужно получить таблицу с полями: Result(OpertorCode, OperatorName, ComInv, InvAbon, InvComp). OpertorCode, OperatorName- код и имя компании соответственно берутся из справочника COMPANY CompInv, InvAbon - расчетные данные из таблицы efir InvComp - расчетные данные из таблицы ttf Запрос 1 SELECT DISTINCT Company.OperatorCode, Company.OperatorName, 'ROUMOUT' tit, SUM( Efirdtl.SDR ) CompInv, SUM( Efirdtl.CostCCC ) InvAbon FROM "COMPANY.DB" Company LEFT OUTER JOIN "efirdtl.DB" Efirdtl ON (Company.OperatorCode = Efirdtl.OperatorCode) WHERE (Company.DateEnd IS NULL) AND Company.OperatorCode NOT IN ('CCC') GROUP BY Company.OperatorCode, Company.OperatorName UNION ALL SELECT Company.OperatorCode, Company.OperatorName, 'ROUMIN ' tit, SUM( ttf.CostCCC ) CompInv, SUM( ttf.CostCCC ) InvAbon FROM "COMPANY.DB" Company LEFT OUTER JOIN "ttf.DB" ttf ON (Company.OperatorCode = ttf.OperatorCode) WHERE (Company.DateEnd IS NULL) AND Company.OperatorCode NOT IN ('CCC') GROUP BY Company.OperatorCode, Company.OperatorName Сохраняем получившуюся таблицу - Result Запрос 2 UPDATE 'RESULT.DB' R SET R.InvAbon = NULL WHERE TIT IN ('ROUMIN') Запрос 3 SELECT R.OperatorCode, R.OperatorName, R.CompInv, R.InvAbon, R1.CompInv AS InvComp FROM 'result.db' R, 'result.db' R1 WHERE R1.TIT IN ('ROUMIN') AND R.OperatorCode = R1.OperatorCode AND R.TIT IN ('ROUMOUT') ВСЕ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 16:27 |
|
||
|
Использование Update
|
|||
|---|---|---|---|
|
#18+
Так свою задачу я решил, но остался вопрос можно ли все таки в ACCESS в UPDATE в качестве выражения использовать запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 16:32 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33296632&tid=1347393]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 266ms |
| total: | 537ms |

| 0 / 0 |
