Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 05.11.2017, 11:35   #1
Grinvel
Пользователь
 
Регистрация: 25.09.2017
Сообщений: 16
Репутация: 10
По умолчанию Занесение данных из одной таблицы в другую

БД Access. Нужно занести из 2 таблицы в 1 значения сумм столбца в соответствии с условием.

Код:

CommandText = "UPDATE Table1 Set [Жидкий вес отливок] = SUM(Table2.[Общий жидкий вес]) Where Table2.[Номер плавки] = [Номер плавки] Group By Table2.[Номер плавки]";

Возникает ошибка: "Пропущен символ ";" в конце инструкции SQL"

Смотрел примеры использования функции SUM в запросах, но не нашёл ни 1 с использованием в запросе UPDATE.

Последний раз редактировалось Grinvel; 05.11.2017 в 13:05.
Grinvel вне форума   Ответить с цитированием
Старый 05.11.2017, 12:22   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,001
Репутация: 6348
По умолчанию

И что твое Table2 означает в запросе? Так пробуй:
Код:

UPDATE Table1
  INNER JOIN (SELECT [Номер плавки], SUM([Общий жидкий вес]) Вес FROM Table2 GROUP BY [Номер плавки]) T2 ON T2.[Номер плавки] = Table1.[Номер плавки]
SET [Жидкий вес отливок]=T2.Вес

__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 05.11.2017, 13:04   #3
Grinvel
Пользователь
 
Регистрация: 25.09.2017
Сообщений: 16
Репутация: 10
По умолчанию

что из себя представляет "Вес"? Поле, значение?
Grinvel вне форума   Ответить с цитированием
Старый 05.11.2017, 13:06   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,001
Репутация: 6348
По умолчанию

Поле конечно, синоним посчитанной суммы
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 05.11.2017, 13:13   #5
Grinvel
Пользователь
 
Регистрация: 25.09.2017
Сообщений: 16
Репутация: 10
По умолчанию

не совсем понял, куда записывается сумма, поля для её хранения нет в таблицах
на участке запроса "SUM([Общий жидкий вес]) Вес" возникает ошибка синтаксиса
Grinvel вне форума   Ответить с цитированием
Старый 05.11.2017, 13:23   #6
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,001
Репутация: 6348
По умолчанию

Цитата:
не совсем понял, куда записывается сумма, поля для её хранения нет в таблицах
Записывается во временную таблицу в памяти или в базе, как и результат любого вложенного запроса.
Цитата:
на участке запроса "SUM([Общий жидкий вес]) Вес" возникает ошибка синтаксиса
Сделай AS Вес и для вложенного запроса AS T2. Возможно для access нельзя опускать слово as, не помню.
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 05.11.2017, 13:57   #7
Grinvel
Пользователь
 
Регистрация: 25.09.2017
Сообщений: 16
Репутация: 10
По умолчанию

Код:

CommandText = "UPDATE Table1 " +
                           "INNER JOIN (SELECT [Номер плавки], SUM([Общий жидкий вес]) AS Вес FROM Table2 GROUP BY [Номер плавки]) AS T2 ON T2.[Номер плавки] = Table1.[Номер плавки] " +
                            "SET [Жидкий вес отливок] = T2.Вес";

"Несоответствие типа в выражении"

Типы полей числовые. Может ли возникать ошибка из-за вложенного запроса?

Открытие соединений и обработка запроса происходит в отдельной процедуре.
Код:

private void ConnectPlav(string CommText, Dictionary<string, string> bdParam, bool chGrid)  //процедура выполнения запросов к БД карт плавок
        {
            CommandText = CommText;
            OleDbConnection conn = new OleDbConnection(ConnectionStringPlav);       
            conn.Open();
            OleDbCommand MyCommand = new OleDbCommand();                        
            MyCommand.Connection = conn;
            MyCommand.CommandText = CommandText;
            foreach (var param in bdParam)                                    
            {
                MyCommand.Parameters.AddWithValue(param.Key, param.Value);
            }
            if (CommandText.Contains("UPDATE") || CommandText.Contains("DELETE") || CommandText.Contains("INSERT"))
            {
                MyCommand.ExecuteNonQuery();                                   
            }
            else
            {
                OleDbDataAdapter dataAdapter = new OleDbDataAdapter();          
                dataAdapter.SelectCommand = MyCommand;
                DataSet ds = new DataSet();                                    
                dataAdapter.Fill(ds);
                if (chGrid)
                    GridNumPlav.DataSource = ds.Tables[0].DefaultView; 
                else
                    GridDetInPlav.DataSource = ds.Tables[0].DefaultView;
            }
            conn.Close(); 
        }

Насколько я понял, при вложенных запросах, в первую очередь обрабатываются самые глубокие. Тогда на какой блок нужно отправлять запрос с вложениями: обработки update- или select-запросов?
Grinvel вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных из одной таблицы в другую с изменением формата отображения данных Tsvetulya Microsoft Office Excel 4 06.07.2016 17:30
перенос данных из одной таблицы в другую jawa250t БД в Delphi 1 09.03.2013 14:32
MS SQL SERVER 2005 копирование таблицы из ОДНОЙ БД В другую или перенести все строки из одной таблицы в другую reihtmonbern БД в Delphi 4 17.07.2012 23:25
Копирование данных из одной таблицы в другую Arega Microsoft Office Access 0 11.07.2012 17:01
Передача данных из одной таблицы в другую, при выборе одной ячейки MickMick Microsoft Office Excel 6 06.10.2008 13:57


12:14.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru