Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MySQL]скопировать поля одной записи в другую запись 
:(
    Опции темы
maxipub
Дата 9.8.2011, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



уважаемые, как лучше скопировать содержимое одного рядка в другой?
предположим, у нас есть некая таблица, с уникальным id, как содержание рядка с id = 123 сделать таким же, как и у рядка с id = 777 ?

и еще такой подвопрос, а можно сделать все то же самое, только с исключением определенного, указанного списка колонок (т.е. их значения не копировать)
PM MAIL   Вверх
CruorVult
Дата 9.8.2011, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

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



банально select+insert/update

просто копировать 
Код

insert into table_name select * from table_name where id=777

PM MAIL Skype   Вверх
maxipub
Дата 9.8.2011, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



CruorVult, благодарю, но, во-первых, необходимо не вставить новый рядок, а обновить существующий. Во-вторых, id - уникальный.
PM MAIL   Вверх
CruorVult
Дата 9.8.2011, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

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



обычным запросом врятли получится. Нужно вытянуть селектом нужную запись и потом построить нужный апдейт запрос

Это сообщение отредактировал(а) CruorVult - 10.8.2011, 14:27
PM MAIL Skype   Вверх
Akina
Дата 10.8.2011, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Цитата(maxipub @  9.8.2011,  17:48 Найти цитируемый пост)
необходимо не вставить новый рядок, а обновить существующий

удалить сущствующий, скопировать нужный с соотв. изменением ID.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
LordZeus
Дата 23.8.2011, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Извиняюсь, но почему у меня не работает этот код  !?

Код

insert into t_goods
(`kod_p`,`type_good`,`kod_fab`,`color`,`cena_z`,`cena_pro`,`id_curr`,`id_shop`)
 select `t_goods`.`kod_p`, `t_goods`.`kod_fab`, `t_goods`.`color`, `t_goods`.`cena_z`, 
`t_goods`.`cena_pro`, `t_goods`.`id_curr`, `t_goods`.`id_shop` from t_goods where id=14


Выдает данную ошибку

Код

Column count doesn't match value count at row 1

PM MAIL   Вверх
Akina
Дата 23.8.2011, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



LordZeus, Если Вы неспособны самостоятельно перевести сообщение - попросите это сделать любой онлайновый переводчик.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
LordZeus
  Дата 23.8.2011, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Akina, ВО Я  ТУПАНУЛ  smile.... пересчитывал 5 раз..и только сейчас недосчитался одной записи. 
PM MAIL   Вверх
Akina
Дата 23.8.2011, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



 smile 
Не пишите всё в строку, лучше вот так
Код

insert into t_goods
(
 `kod_p`,
 `type_good`,
 `kod_fab`,
 `color`,
 `cena_z`,
 `cena_pro`,
 `id_curr`,
 `id_shop`
)
select
 `t_goods`.`kod_p`,
 `t_goods`.`kod_fab`,
 `t_goods`.`color`,
 `t_goods`.`cena_z`, 
 `t_goods`.`cena_pro`,
 `t_goods`.`id_curr`,
 `t_goods`.`id_shop` 
from t_goods 
where id=14
И понятнее, и считать проще, и комментарии есть куда добавить, буде надо...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
rodnover
Дата 23.8.2011, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



http://dev.mysql.com/doc/refman/5.0/en/replace.html

Вот такое? обновляет все существующие id, добавляет отсутствующие.

Код

REPLACE INTO `table1`(id, field)
select `table2`.id, `table2`.field
from `table2`


Это сообщение отредактировал(а) rodnover - 23.8.2011, 11:59
PM MAIL   Вверх
Zloxa
Дата 23.8.2011, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(Akina @  23.8.2011,  11:49 Найти цитируемый пост)
 лучше вот так


Запятые, ИМХО лучше в начале строки ставить. Это поначалу кажется не логичным, пока ездиишь в реьсах грамаматики человеческого языка.

Но на деле.. 

Во первых, если строка всегда начинается с лексической конструцкии (не идентификатора), это намного проще парсить глазками. Правда намного лучше это видно при переносе выражений....  Намного легче читать, когда операторы (сложения всякие, конткатенации)  находятся в начале строки и ты понимаешь что это не новое выражение а продложение старого. Тоже  и с функцией. Когда видишь запятую в начале, сразу понимаешь, что это еще перечисление параметров, а не вызов новой процедуры - и скобки считать не надо.

Во вторых  на практике куда чаще возникает необходимость элемент дописать в конец списка нежели в его начало. Если запятая ставится в начале строки, то не надо идти на конец предыдущей строки, ставить запятую... много каллорий экомномится

В третьих, на практике куда чаще возникает необходимость закоментировать последний элемент списка(или же несколько последних) нежели первый, ставим -- в начале строки и не надо идти на строку в верх, чтобы убрать запятую.

А из недостатков - лишь легкий разрыв шаблонов в попервое.

Это сообщение отредактировал(а) Zloxa - 23.8.2011, 12:30


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LordZeus
Дата 23.8.2011, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да ... тут целое обоснование концепции расстановки логических разделителей! =))

к стати я тот код так вывел потому, что сильно затупил и в запаре (ихмо чувство пустяковости задачи не покидало меня), и чувствуя беспричинную злость на свой комп и всех, кто причастен к разработке SQL  - выложил код как он был в результате моих манипуляций...

а так в коде у меня все выглядит так..
Код

INSERT INTO 
              `consist_partia`
            (
              `id_good`,
              `id_consist`,
              `procent`
            ) 
            (SELECT 
              '.$id_doc.',
              `id_consist`,
              `procent`
            from `consist_partia` where `consist_partia`.`id_good`='.$obj.');


так что полностью согласен на счет "не писать все в одну строку." На счет запятых... подумаю сейчас за обедом... может это и имеет смысл  smile 

Это сообщение отредактировал(а) LordZeus - 23.8.2011, 13:04
PM MAIL   Вверх
Akina
Дата 23.8.2011, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Цитата(Zloxa @  23.8.2011,  13:04 Найти цитируемый пост)
Запятые, ИМХО лучше в начале строки ставить. Это поначалу кажется не логичным, пока ездиишь в реьсах грамаматики человеческого языка.

Ну можно вообще довести до абсурда и ставить запятые в отдельных строках smile не, насчёт того, что в начале они удобнее - согласен, сам так делаю, но вот форматировать так чужой код муторно...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
rodnover
Дата 23.8.2011, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Смысл ставить имеет. Хотя, я неделю не мог привыкнуть к такому оформлению. А ставить запятые на отдельных строчках тоже минус вместо одной строчки две придется комментировать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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