Общие > Базы данных
Вставка данных в MySQL из одной записи в другую
UltraMax:
У меня возникла следующая ситуация
Был готовый скрипт, в котором по определенному действию выаолнялось действие
$query = \\"DELETE FROM pending_tasks WHERE tid = \\\'$tid\\\'\\";
мне надо чтобы помимо удаления из pending_tasks вся эти данные были записаны в другую таблицу
есть ли какая-либо команда - позволяющаяэто сделать?
lodevar:
Минуточку... Делаешь два запроса: один на копирование данных (insert), другой на удаление (delete). Наверное так.
UltraMax:
--- Цитировать ---Минуточку... Делаешь два запроса: один на копирование данных (insert), другой на удаление (delete). Наверное так.
--- Конец цитаты ---
Я плохо разбираюсь в php
Если можно поточнее
В оригинали было так
{
$query = \\"DELETE FROM pending_tasks WHERE tid = \\\'$tid\\\'\\";
}
db_query($query);
мне же нужно эти данные (которые удалаяются по tid-у) скопировать в другую таблицу. Но ведь если я делаю INSERT то мне надо знать что я вставляю (как я понимаю). ЧТо ж мне просто написать
$query = \\"INSERT INTO completed_tasks WHERE tid = \\\'$tid\\\'\\";
а что оно вставит-то? мне ж надо какие-то VALUES передать
Или я неправильно понимаю?
lodevar:
Вот тут-то и начинается это ограничение на вложенные запросы...:(
в ANSI SQL делается примерно так insert into tab1 (f1,f2,f3) values (select ff1,ff2,ff3 from tab2)
IMHO А с MySql придется наверное через массив делать. Сначала в массив, потом удаление, потом пробегая по массиву insert... так как ты сказал. Наверное так. Времени нет пробовать.:(
AliMamed:
$query = \\"
INSERT INTO table_new (f1, f2, f3) SELECT (pending_tasks.f1, pending_tasks.f2, pending_tasks.f3) FROM pending_tasks WHERE
pending_tasks.tid = \\\'$tid\\\';
DELETE FROM pending_tasks WHERE tid=\\\'$tid\\\';
\\";
[Изменено 30.8.2001 автор: AliMamed]
Навигация
Перейти к полной версии