Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/106: Рейтинг темы: голосов - 106, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88

Копирование через UPDATE столбца col2 из одной таблицы в другую, при условии, что PRIMARY KEY составной

15.04.2021, 10:41. Показов 22572. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Выполнение копирования данных из столбца в столбец таблиц с использованием кода
MySQL
1
UPDATE orders1 SET titleO = (SELECT titleO FROM orders WHERE orderNumber = orders1.orderNumber)
получается успешно, когда PRIMARY KEY простой, одностолбцовый, не составной.
А вот выполнить код
MySQL
1
UPDATE nomer4 SET col2=(SELECT col2 FROM nomer1 WHERE (id1,id2)=nomer4.(id1,id2))
уже не получается.
Подскажите пожалуйста, кто знает о специфике работы с составными ключами.
Миниатюры
Копирование через UPDATE столбца col2 из одной таблицы в другую, при условии, что PRIMARY KEY составной  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2021, 10:41
Ответы с готовыми решениями:

Перенести записи из одной таблицы в другую при условии
Здравствуйте! Есть таблицы: "Пользователи" с полями : (id, фамилия, Имя, Отчество) "Показания" с полями: (id,...

Данные из одной таблицы должны автоматически заноситься в другую при условии
Дана таблица на листе Оборотка и таблица на листе Свод при совпадении № с/с/сч на первом листе и № п/р надо перенести строку с данными в...

Перенос данных из одной таблицы в другую при помощи Update
Добрый деннь! Есть 2 таблицы в одной базе. 1-я - Фирмы, 2-я Выборка. В таблице Фирмы 3 поля: Название, ФИО, Адрес; В...

15
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
15.04.2021, 11:07
SQL
1
WHERE id1=nomer4.id1 AND id2=nomer4.id2
дай ссылку на то, где увидел синтаксис подобный этому: (id1,id2)=
0
1745 / 1674 / 167
Регистрация: 25.07.2015
Сообщений: 2,730
15.04.2021, 11:13
Вы с одной стороны усложняете себе жизнь, как в прошлой теме , с другой пытаетесь упростить ))))
WHERE с составными ключами работает точно так же , как и с любыми другими полями , т.е. должно быть так.
MySQL
1
UPDATE nomer4 SET col2=(SELECT col2 FROM nomer1 WHERE id1 = nomer4.id1 AND id2 =nomer4.id2)
0
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
15.04.2021, 12:00  [ТС]
Цитата Сообщение от Kulma Посмотреть сообщение
Вы с одной стороны усложняете себе жизнь, как в прошлой теме , с другой пытаетесь упростить ))))
Свет и Тьма борются во мне!)))

Цитата Сообщение от Аватар Посмотреть сообщение
дай ссылку на то, где увидел синтаксис подобный этому: (id1,id2)=
да нигде не увидел), незнание это моё. Теперь знаю как надо.

Всем спасибо.

Добавлено через 40 минут
Цитата Сообщение от Аватар Посмотреть сообщение
дай ссылку на то, где увидел синтаксис подобный этому: (id1,id2)=
Справедливости ради, относительно обрисованной в теме ситуации, да, я сам придумал по незнанию. А вообще прецедент был вот такой:
Code
1
UPDATE semsub SET id=1 WHERE (subject, semestr)=('БД', 1)
Это двухстолбцовая таблица, каждый столбец которой является компонентом составного ключа.
0
1234 / 424 / 107
Регистрация: 31.03.2012
Сообщений: 1,159
15.04.2021, 13:02
Цитата Сообщение от Аватар Посмотреть сообщение
где увидел синтаксис подобный этому: (id1,id2)=
см. здесь
0
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
15.04.2021, 13:28  [ТС]
Цитата Сообщение от Joeymax Посмотреть сообщение
см. здесь
Благодарю.
0
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
15.04.2021, 17:22  [ТС]
Вы можете сказать, в чем ошибка?
Вот код:
MySQL
1
UPDATE magaz.nomer2 SET col1, col2 =(SELECT col1, col2 FROM nomer1 WHERE id1=id1.nomer2 AND id2=id2.nomer2)
Замысел - обновить в другой таблице данные в двух столбцах, взяв из другой таблицы.
Ругается на то, что после SET столбцы указаны через запятую.
А в схеме на рисунке из https://www.sqlite.org/lang_update.html показано, что там можно через запятую.
Миниатюры
Копирование через UPDATE столбца col2 из одной таблицы в другую, при условии, что PRIMARY KEY составной  
0
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
15.04.2021, 17:31  [ТС]
Опечатка
MySQL
1
UPDATE magaz.nomer2 SET col1, col2 =(SELECT col1, col2 FROM nomer1 WHERE id1=nomer2.id1 AND id2= nomer2.id2)
0
1745 / 1674 / 167
Регистрация: 25.07.2015
Сообщений: 2,730
15.04.2021, 17:37
Каким чудесным образом вы планируете присвоить одной ячейке значения выборки из двух столбцов ?
Читайте здесь и здесь
0
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
15.04.2021, 17:42  [ТС]
Цитата Сообщение от Kulma Посмотреть сообщение
Каким чудесным образом вы планируете присвоить одной ячейке значения выборки из двух столбцов ?
Да, я их и в скобки заключал)
Понятно, перечислением надо по отдельности. В общем в один запрос количество символов получится то же почти, что и в двух запросах)
Спасибо за хороший источник https://oracleplsql.ru/update-mysql.html
И вообще спасибо)
0
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
15.04.2021, 18:00  [ТС]
Продолжая тему с составными PRIMARY KEY, столкнулся с новой задачей.
Создал триггер, чтобы в двух таблицах при добавлении строк в таблицу с составным ключом, добавлялись строки и там.
Триггер был принят системой благосклонно)
MySQL
1
2
3
4
5
6
7
8
DELIMITER $$
CREATE TRIGGER nom_i AFTER INSERT ON nomer1 
FOR EACH ROW 
BEGIN 
INSERT INTO nomer4 (id1, id2, col1, col2) VALUES (NOW.id1, NOW.id2, NOW.col1, NOW.col2); 
INSERT INTO magaz.nomer2 (id1, id2, col1, col2) VALUES (NOW.id1, NOW.id2, NOW.col1, NOW.col2); 
END $$
DELIMITER ;
Но попытавшись внести строку в таблицу
MySQL
1
INSERT INTO nomer1 (id1, id2, col1, col2) VALUES (4, 40, 6, 444)
(ведь надо вносить и ключ, т.к. никаких автоинкрементов нет), получил вот такую ошибку.
Почему? Ведь всё сделано правильно. Эта строка вносится в такую же таблицу без триггера на ура.
Значит, что-то связано с триггерным делом?
Миниатюры
Копирование через UPDATE столбца col2 из одной таблицы в другую, при условии, что PRIMARY KEY составной  
0
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
15.04.2021, 18:01  [ТС]
Дважды сообщение отправилосью
0
1745 / 1674 / 167
Регистрация: 25.07.2015
Сообщений: 2,730
15.04.2021, 18:21
А что это такое ?...
Цитата Сообщение от KAMLS Посмотреть сообщение
VALUES (NOW.id1, NOW.id2, NOW.col1, NOW.col2)
Ну человек то допустим догадается , что речь идёт о каких-то полях какой-то таблицы .
А по каким признакам об этом может догадаться MySql , если вы таблицу не объявляли,
выборку этих полей не делали ?
MySql выполняет ровно то , что вы ему написали . Он не умеет предполагать.
0
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
15.04.2021, 18:28  [ТС]
Дело в том, что я делал по научению из одного видеоурока. Там предлагались таблицы (я их создал) и манипуляции с таблицами.
Вот этот пример рабочий:
MySQL
1
2
3
4
5
6
7
8
DROP TRIGGER IF EXISTS newprofile;  /*пересоздание триггера при импорте*/
DELIMITER $$
CREATE TRIGGER newprofiless AFTER INSERT ON users_t /*после вставки в таблицу users*/
FOR EACH ROW
BEGIN
INSERT INTO profiless_t(user_id) VALUES (NEW.id);  /*вставить в таблицу profiles_t*/
END $$
DELIMITER ;
Вот этот пример уже я сделал по аналогу, и он тоже рабочий:
MySQL
1
2
3
4
5
CREATE TRIGGER snip_p AFTER INSERT ON snip
FOR EACH ROW
BEGIN
INSERT INTO snip1 (snip_vg, oruzh, price) VALUES (NEW.snip_vg, NEW.oruzh, NEW.price);
END $$
То есть в одной таблице дополняю, и в двух других такие же изменения.
Но там автоинкремент. Ключ простой. А тут составной. И именно на столбец ключа он ругается. И именно в триггере, ибо если вставлять просто, то не ругается на такую же строку.
0
1745 / 1674 / 167
Регистрация: 25.07.2015
Сообщений: 2,730
15.04.2021, 18:39
Цитата Сообщение от KAMLS Посмотреть сообщение
Вот этот пример уже я сделал по аналогу, и он тоже рабочий:
Сравниваем. Никакой разницы не видите ?
Цитата Сообщение от KAMLS Посмотреть сообщение
VALUES (NEW.snip_vg, NEW.oruzh, NEW.price)
Цитата Сообщение от KAMLS Посмотреть сообщение
VALUES (NOW.id1, NOW.id2, NOW.col1, NOW.col2)
Составной ключ здесь ни при чём, в описании ошибки ясно сказано : Неизвестный столбец NOW.id1
Уже не смешно , если честно.
Вы хоть пару строк прочитайте в документации : NEW -ключевое слово в триггере
0
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
15.04.2021, 18:41  [ТС]
**** *** ********* **** ** *****
Спасибо.
Похоже на сегодня надо заканчивать)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.04.2021, 18:41
Помогаю со студенческими работами здесь

Дедлоки между update limit N и update по primary key
Добрый день! Столкнулся с дедлоками, хотелось бы послушать опытных товарищей как с этим быть. Описание: Есть табличка CREATE...

Ошибка "Violation of primary key constraint" при update
Написал программку. При нажатии на кнопку "обновить" должна происходить синхронизация между базой данных и DataGrid (посредством метода...

Dataset Update ошибка с Primary Key
Здравствуйте. Возникла проблема с обновлением DataSet при работе со связанными строками из одной таблицы. БД в Access 2007. Код: ...

Ошибка при заполнении пустой таблицы: Violation of Primary Key constraint
Всем привет. С базами данных я на Вы. Установил SQL_EXPRESS_2014. В менеджмент студио запустил SQL-скрипт для создающий пять таблиц. ...

Update из одной таблицы в другую
Всем привет! Есть две таблицы, условно : "table1" и "table2" В каждой таблице есть столбцы id и razmer. Как из table1 обновить все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru