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
Форумы портала PHP.SU :: Версия для печати :: Копирование из одной таблицы в другую
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Копирование из одной таблицы в другую

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

1. Albertino - 04 Июля, 2011 - 13:41:26 - перейти к сообщению
Задача заключается в следующем:
есть две таблицы с полностью одинаковой структурой table1 и table2, нужно если table1.id = table2.id, скопировать table2.lastname в table1.lastname (те нужно заполнить колонку lastname таблици table1 соответствующими данными из таблицы table2).
Как это сделать(какой надо sql запрос)?
2. Саныч - 04 Июля, 2011 - 13:57:25 - перейти к сообщению
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.  

возможно вариант и кривой, но должен работать...
3. Albertino - 04 Июля, 2011 - 14:03:43 - перейти к сообщению
Саныч пишет:

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

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

сто процентной уверенности у меня нет, но скажу, что это не возможно...
5. OrmaJever - 04 Июля, 2011 - 14:14:51 - перейти к сообщению
Саныч пишет:
но скажу, что это не возможно...

наоборот, это возможно но я тоже не подскажу как Улыбка
EuGen, Мелкий, Champion - вот те люди которые могут помочь Улыбка
6. vsll - 04 Июля, 2011 - 14:19:54 - перейти к сообщению
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']."'");
7. Мелкий - 04 Июля, 2011 - 14:26:17 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `table1` LEFT JOIN `table2` USING(`id`) SET `table1`.`lastname`=`table2`.`lastname`
8. Albertino - 04 Июля, 2011 - 14:30:24 - перейти к сообщению
Мелкий пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `table1` LEFT JOIN `table2` USING(`id`) SET `table1`.`lastname`=`table2`.`lastname`

спасибо
9. Мелкий - 04 Июля, 2011 - 14:31:58 - перейти к сообщению
Обновит все данные, но только для поля lastname.
10. vsll - 04 Июля, 2011 - 14:33:41 - перейти к сообщению
Мелкий +1
11. Champion - 04 Июля, 2011 - 20:58:45 - перейти к сообщению
Albertino пишет:
LEFT JOIN
Не за трет ли он NULLами в тех случаях, когда в подсоединяемой таблице на будет строк с совпадающим id? Лучше не LEFT, лучше просто JOIN.
(Добавление)
OrmaJever пишет:
EuGen, Мелкий, Champion - вот те люди которые могут помочь
Я тут редко, но меня помнят - это приятно))

 

Powered by ExBB FM 1.0 RC1