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]   

> Без описания
Albertino
Отправлено: 04 Июля, 2011 - 13:41:26
Post Id


Гость


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


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




Задача заключается в следующем:
есть две таблицы с полностью одинаковой структурой table1 и table2, нужно если table1.id = table2.id, скопировать table2.lastname в table1.lastname (те нужно заполнить колонку lastname таблици table1 соответствующими данными из таблицы table2).
Как это сделать(какой надо sql запрос)?
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 13:57:25
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




PHP:
скопировать код в буфер обмена
  1. $sql = mysql_query('SELECT id,lastname FROM table2');
  2. while ($res = mysql_fetch_assoc($sql)) {
  3.    $sql = mysql_query('SELECT * FROM table1 WHERE id='.$res['id']);
  4.    if (mysql_num_rows($sql) > 0) mysql_query('UPDATE table1 SET lastname="'.$res['lastname'].'" WHERE id='.$res['id']);
  5. }
  6.  

возможно вариант и кривой, но должен работать...

(Отредактировано автором: 04 Июля, 2011 - 13:58:09)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Albertino
Отправлено: 04 Июля, 2011 - 14:03:43
Post Id


Гость


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


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




Саныч пишет:

возможно вариант и кривой, но должен работать...

Спасибо конечно, до этого я и сам догадался, но мне хотелось бы знать а вообще возможно это сделать чисто на sql.
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 14:10:35
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Albertino пишет:
а вообще возможно это сделать чисто на sql.

сто процентной уверенности у меня нет, но скажу, что это не возможно...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
OrmaJever
Отправлено: 04 Июля, 2011 - 14:14:51
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




Саныч пишет:
но скажу, что это не возможно...

наоборот, это возможно но я тоже не подскажу как Улыбка
EuGen, Мелкий, Champion - вот те люди которые могут помочь Улыбка


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vsll
Отправлено: 04 Июля, 2011 - 14:19:54
Post Id


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


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


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




OrmaJever пишет:
наоборот, это возможно но я тоже не подскажу как

даже интересно как у меня всё равно только так если
PHP:
скопировать код в буфер обмена
  1. mysql_query("INSERT INTO table2 (lastname2) SELECT lastname1 FROM table1 WHERE id1 =='".$data['id2']."'")");
  2. mysql_query("DELETE FROM table1 WHERE id1 =='".$data['id2']."'");
 
 Top
Мелкий Супермодератор
Отправлено: 04 Июля, 2011 - 14:26:17
Post Id



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


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


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




CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `table1` LEFT JOIN `table2` USING(`id`) SET `table1`.`lastname`=`table2`.`lastname`


-----
PostgreSQL DBA
 
 Top
Albertino
Отправлено: 04 Июля, 2011 - 14:30:24
Post Id


Гость


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


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




Мелкий пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `table1` LEFT JOIN `table2` USING(`id`) SET `table1`.`lastname`=`table2`.`lastname`

спасибо

(Отредактировано автором: 04 Июля, 2011 - 14:31:54)

 
 Top
Мелкий Супермодератор
Отправлено: 04 Июля, 2011 - 14:31:58
Post Id



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


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


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




Обновит все данные, но только для поля lastname.


-----
PostgreSQL DBA
 
 Top
vsll
Отправлено: 04 Июля, 2011 - 14:33:41
Post Id


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


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


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




Мелкий +1
 
 Top
Champion Супермодератор
Отправлено: 04 Июля, 2011 - 20:58:45
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Albertino пишет:
LEFT JOIN
Не за трет ли он NULLами в тех случаях, когда в подсоединяемой таблице на будет строк с совпадающим id? Лучше не LEFT, лучше просто JOIN.
(Добавление)
OrmaJever пишет:
EuGen, Мелкий, Champion - вот те люди которые могут помочь
Я тут редко, но меня помнят - это приятно))
 
 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