Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как с помощью SQL присвоить значение полученное с 
:(
    Опции темы
Xagakure
  Дата 13.11.2006, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



Как с помощью SQL присвоить значение полученное с помощью него (например SUM(something)) определенному полю...???  smile 
PM MAIL ICQ   Вверх
Akella
Дата 13.11.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



а так пробовал?
Код

  update table1 set sum1 = (select sum(sum2) from table2)

PM MAIL   Вверх
Xagakure
Дата 18.11.2006, 04:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



Когда пытаюсь в Delphi в свойстве компонента SQL написать данную строку.... при активации компонета выпадает ошибка....
В операции должен использоваться обновляемый запрос.... smile 

Это сообщение отредактировал(а) Xagakure - 18.11.2006, 04:56
PM MAIL ICQ   Вверх
Rodman
Дата 18.11.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Можно и 
Код

INSERT INTO table1 (sum1) VALUES ((select sum(sum2) from table2));

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Xagakure
Дата 19.11.2006, 03:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



Ну тогда это просто вставка новой записи, а мне нужно обновление старой... smile

Добавлено @ 03:11 
Что значит в этом случае ОБНОВЛЯЕМЫЙ ЗАПРОС smile 
PM MAIL ICQ   Вверх
jack128
Дата 19.11.2006, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 18.5.2005

Репутация: нет
Всего: 4



Цитата(Xagakure @  18.11.2006,  04:55 Найти цитируемый пост)
при активации компонета выпадает ошибка....

что значит "при активации" ?
?  Вообще о каком компоненте и субд говорим?
PM MAIL   Вверх
Xagakure
Дата 20.11.2006, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



TAdoQuery
Когда в свойстве этого компа SQL вводишь строку такого типа  update table1 set sum1 = (select sum(sum2) from table2)
то при активации его, т.е. TADOQuery.Active:=true; выскакивает выше описанная ошибка... smile 
PM MAIL ICQ   Вверх
ТоляМБА
Дата 20.11.2006, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Ну если грабли не найдёшь, можно попробовать через переменную:
Код

ADOQuery1.Close;
ADOQuery1.SQL.Text:='select sum(sum2) as Summa from table2';
ADOQuery1.Open;
f:=ADOQuery1.FieldValues['Summa'];
ADOCommand1.CommandText:='update table1 set sum1 ='+FloatToStr(f);
ADOCommand1.Execute;
 Да, заметил такую фишку, в update тебе ещё ведь надо условие where поставить, иначе он у тебя всё поле засобачит одинаковой суммой, а тебе ведь по любому надо обновить одну запись (если конечно в таблице их много).

Добавлено @ 06:13 
Цитата(Xagakure @  20.11.2006,  02:00 Найти цитируемый пост)
update table1 set sum1 = (select sum(sum2) from table2)
то при активации его, т.е. TADOQuery.Active:=true; выскакивает выше описанная ошибка... 
 Нда. Настолько избиты грабли, что даже ругаться нету сил. F1 нажимать не пробовали? Там ведь английским языком написано: для Select используем Open, для остальных (которые не выводят записи: Update, Insert) используем ExecSQL!

Добавлено @ 06:15 
Да, чуть не забыл:

TADOQuery.Active:=true;
идентично
TADOQuery.Open;
-----------------------
TADOQuery.Active:=false;
идентично
TADOQuery.Close;
PM   Вверх
Xagakure
Дата 20.11.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



Код

  DataM.AlenkaSQL.Close;
  DataM.AlenkaSQL.SQL.Clear;
  DataM.AlenkaSQL.SQL.Add('UPDATE Основная, [График выплат] SET Долг=(SELECT SUM(Сумма) FROM [График выплат], Основная');
  DataM.AlenkaSQL.SQL.Add('WHERE [График выплат].LinkKey LIKE Основная.Key1) WHERE Основная.Key1 LIKE [График выплат].LinkKey');
  DataM.AlenkaSQL.ExecSQL;


где грабли.... мля....
выдает ошибку.... В ОПЕРАЦИИ ДОЛЖЕН ИСПОЛЬЗОВАТЬСЯ ОБНОВЛЯЕМЫЙ ЗАПРОС.... smile 
PM MAIL ICQ   Вверх
ТоляМБА
Дата 20.11.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



База какая???
PM   Вверх
Rodman
Дата 20.11.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Код

  DataM.AlenkaSQL.Close;
  DataM.AlenkaSQL.SQL.Clear;
  DataM.AlenkaSQL.SQL.Add('UPDATE Основная, [График выплат] SET Долг=(SELECT SUM(Сумма) FROM [График выплат], Основная');
  DataM.AlenkaSQL.SQL.Add('WHERE (([График выплат].LinkKey LIKE Основная.Key1)and(Основная.Key1 LIKE [График выплат].LinkKey'));
  DataM.AlenkaSQL.ExecSQL;


а если можешь то сразу в СУБД проверь

или

Код

  DataM.AlenkaSQL.Close;
  DataM.AlenkaSQL.SQL.Clear;
  DataM.AlenkaSQL.SQL.Add('UPDATE Основная, [График выплат] SET Долг=(SELECT SUM(Сумма) FROM [График выплат], Основная');
  DataM.AlenkaSQL.SQL.Add('WHERE [График выплат].LinkKey=Основная.Key1');
  DataM.AlenkaSQL.ExecSQL;


я так понимаю, что у тебя MS Access, проверяй прямо в ней, если заработает то все ОК...

Иначе попробуй как ТоляМБА предложил..

Это сообщение отредактировал(а) Rodman - 20.11.2006, 15:42
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Xagakure
Дата 20.11.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



база Access ... 

ОПЯТЬ ТЕ ЖЕ ГРАБЛИ.... В ОПЕРАЦИИ ДОЛЖЕН ИСПОЛЬЗОВАТЬСЯ ОБНОВЛЯЕМЫЙ ЗАПРОС... smile 
PM MAIL ICQ   Вверх
Vas
Дата 20.11.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



А что такое Основная, [График выплат]? Вроде Update работает сразу только с одной таблицей или я ошибаюсь?
Вот что мне пишет ORACLE на попытку обновления одинакового поля в двух таблицах:
Код

SQL> update gas, konden set id_ceh=1
  2  /
update gas, konden set id_ceh=1
          *
ошибка в строке 1:
ORA-00971: отсутствует ключевое слово SET


Это сообщение отредактировал(а) Vas - 20.11.2006, 16:51


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
sergejzr
Дата 20.11.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Ошибаешься.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Vas
Дата 20.11.2006, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



sergejzr, а можно пример запроса с инструкцией Update на обновление полей сразу в двух и более таблицах.  smile 



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.