Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Перенос данных с таблицы в таблицу

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Простые MySQL запросы
pantela
Отправлено: 29 Января, 2013 - 13:48:08
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Пришлось сделать новый сайт, надо перенети данный записей с одной в другую без потери данных...
напр. Старая таблица №1 из которой надо перенести данный в таблицу №2:
Таблицу №1
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `companies_lang` (
  2.   `comp_id` int(11) NOT NULL,
  3.   `lang_id` int(11) NOT NULL,
  4.   `name` varchar(255) NOT NULL,
  5.   `description` text NOT NULL,
  6.   `offer` text,
  7.   KEY `comp_id` (`comp_id`,`lang_id`),
  8.   KEY `lang_id` (`lang_id`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  10.  
  11. INSERT INTO `companies_lang` (`comp_id`, `lang_id`, `name`, `description`, `offer`) VALUES
  12. (16, 1, 'Мой дом', ''),
  13. (16, 2, 'My home', ''),
  14. (16, 3, 'Benim ev', ''),
  15.  



Таблицу №2
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `companies` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `logo` varchar(255) DEFAULT NULL,
  4.   `title_rus` varchar(255) DEFAULT NULL,
  5.   `title_eng` varchar(255) DEFAULT NULL,
  6.   `title_tur` varchar(255) DEFAULT NULL,
  7.   `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  8.   `url` varchar(255) DEFAULT NULL,
  9.   `email` varchar(255) DEFAULT NULL,
  10.   `fbpage` varchar(255) DEFAULT NULL,
  11.   `prior` int(11) NOT NULL DEFAULT '0',
  12.   `active` tinyint(1) NOT NULL DEFAULT '0',
  13.   `views` int(11) NOT NULL DEFAULT '0',
  14.   `ratings` int(11) DEFAULT NULL,
  15.   PRIMARY KEY (`id`)
  16. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  17.  
  18.  
  19. INSERT INTO `companies` (`id`, `logo`, `title_rus`, `title_eng`, `title_tur`, `date`, `url`, `email`, `fbpage`, `prior`, `active`, `views`, `ratings`) VALUES
  20. (16, 'home_logo.jpg', '', '', '', '2011-12-01 16:35:03', '', 'info@site.ru', 'http://www.facebook.com/pages/СТРАНИЦА', 0, 1, 17680, NULL),


т.е. грубо сказать надо перенести данное WHERE comp_id == id и перенести данные с поля lang_id = 1 в title_rus, а потом сделаю lang_id = 2 в title_eng и lang_id = 3 в title_tur

(Отредактировано автором: 29 Января, 2013 - 13:49:49)

 
 Top
EuGen Администратор
Отправлено: 29 Января, 2013 - 13:53:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Например:
0. Делаете дамп первой таблицы, назвав ее `companies` и занося данные так, как это есть у первой таблицы (у Вас получится первая таблица по структуре и данным, но с другим названием).
1. Поля, которых нет в оригинальной таблице - добавить через
CODE (SQL):
скопировать код в буфер обмена
  1. ALTER TABLE `companies` ADD <описание поля>

2. Поля, которые в новой таблице просто по другому называются - изменить чеез
CODE (SQL):
скопировать код в буфер обмена
  1. ALTER TABLE `companies` CHANGE <старое имя поля> <новое описание>

3. "Дамп" готов.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
pantela
Отправлено: 29 Января, 2013 - 14:32:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Как сделать дамп ясно конечно, у меня стоит вопрос втом как перенессти данные с определёной таблицы с определёной записи с определёного поля в определёную таблицу в определёное поле...

т.е. если внимательно посмотреть на структуру у меня информация о записи (компания) в другой таблицу, теперь перестраиваем сайт и приходить как бы объединить эти 2 таблицы в одну. Растерялся
 
 Top
EuGen Администратор
Отправлено: 29 Января, 2013 - 14:38:33
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Теперь более понятно.
Это тоже просто - используйте синтаксис INSERT..SELECT


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
pantela
Отправлено: 29 Января, 2013 - 15:39:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Не понимаю точно как сделать мне бы один пример запроса с один поле в поле, а там я сам уже перепишу другие поля и WHERE... грубо сказать
CODE (htmlphp):
скопировать код в буфер обмена
  1. WHERE comp_id (таблица companies_lang) == id (таблица companies) и перенести данные с поля lang_id (таблица companies) = 1 в title_rus(таблица companies_lang), а потом сделаю lang_id = 2 в title_eng и lang_id = 3 в title_tur

(Отредактировано автором: 30 Января, 2013 - 09:18:42)

 
 Top
pantela
Отправлено: 30 Января, 2013 - 10:06:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Пожалуйсто приведите пример...
Я не понимаю заем тут нужен INSERT ксли мне надо перенести данные а это вроде UPDATE

(Отредактировано автором: 30 Января, 2013 - 10:07:37)

 
 Top
pantela
Отправлено: 30 Января, 2013 - 13:42:58
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Не пойму как-то так что ли?
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `companies` SET `title_rus` WHERE (SELECT `name` FROM `companies_lang` WHERE `lang_id` = '1');

Но тут ошибыка #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (SELECT `name` FROM `companies_lang` WHERE `lang_id` = '3')' at line 1

Я понимаю что тут сперва надо определить через SELECT и помот подставить в UPDATE

(Отредактировано автором: 30 Января, 2013 - 13:43:38)

 
 Top
Мелкий Супермодератор
Отправлено: 30 Января, 2013 - 13:55:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `companies` JOIN `companies_lang`  ON comp_id=companies.id SET title_rus=name WHERE lang_id=1

?


-----
PostgreSQL DBA
 
 Top
pantela
Отправлено: 30 Января, 2013 - 15:14:11
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Вот это дргуое дело спс большое, один вопрос ещё...

нар. естьу меня таблица images
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `companies_media` (
  2.   `comp_id` int(11) NOT NULL,
  3.   `type` varchar(10) NOT NULL,
  4.   `url` varchar(255) NOT NULL,
  5.   KEY `comp_id` (`comp_id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  7.  
  8. --
  9. -- Dumping data for table `companies_media`
  10. --
  11.  
  12. INSERT INTO `companies_media` (`comp_id`, `type`, `url`) VALUES
  13. (16, 'photo', 'd0f54c1e0b12b09d8aa2eb7dbb2336b4_photo.jpg'),
  14. (16, 'photo', '26e88729012735c707ed2842a6a472df_photo.jpg'),
  15. (16, 'photo', 'a9c57bad603053627f39f2eb31ee4b66_photo.jpg'),
  16. (16, 'photo', 'f1906da9b7c3b6b6311787f5bb1c258c_photo.jpg'),
  17. (16, 'photo', 'd63bc9b6fc80611f3edc43225cb777bc_photo.jpg'),
  18. (16, 'photo', '75a1324b62fec651c90b52aad167687f_photo.jpg'),
  19. (16, 'photo', '89f45d41ee993d34e30ff44dc4fc4e44_photo.jpg'),
  20. (16, 'photo', 'a6a3fd1c0be5f993569107e015d38830_photo.jpg'),
  21. (16, 'photo', '8ed32cb5d9fc14a8dee50971824be902_photo.jpg'),
  22. (16, 'photo', 'f979d1565a27dbb4185a62fadc60082d_photo.jpg'),
  23. (16, 'photo', '4ec12a3fc4060f9f43f7c3881a033b28_photo.jpg'),
  24. (16, 'photo', '17cfdc76cac1a882ac4bbab39f01a5b2_photo.jpg');


И все изображения мне надо впихнуть в другую таблицу в одно поле, но что бы делилось бы через слеш, т.е. в поле получается запись так
CODE (htmlphp):
скопировать код в буфер обмена
  1. 4ec12a3fc4060f9f43f7c3881a033b28_photo.jpg/17cfdc76cac1a882ac4bbab39f01a5b2_photo.jpg/....
 
 Top
Мелкий Супермодератор
Отправлено: 30 Января, 2013 - 15:39:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Не надо. Оставьте имеющуюся нормальную структуру.


-----
PostgreSQL DBA
 
 Top
pantela
Отправлено: 30 Января, 2013 - 22:14:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Согласен, но грубо сказать, сайт который я делал давно одному заказчику передали другому на реконструкцию, вот и тот программист по своему делает... Хм

Подскажите а как выполнить запрос, только через phpMyadmin вроде не получится... наверное надо вынести все записи в PHP файл, и от туда уже через разделить впихнуть всё в поле, Растерялся
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB