Скопировать выбранную информацию из нескольких таблиц, не используя много запросов? - PullRequest
0 голосов
/ 04 июля 2010

Я использую php и mysql для веб-страницы и хочу повторно использовать информацию, имеющуюся в трех таблицах базы данных, аналогично операции «сохранить как».

Таблицы связаны как древовидная структура 1-много, а затем 1-много.

До сих пор я реализовал ее, выровняв древовидную структуру с помощью php (аналогично одному гигантутаблица) и хранить его в массиве.Затем зацикливается на каждой строке и даже на каждой части строки, и для каждой вставляется в соответствующую таблицу с запросом.Это вроде работает, но с большим количеством кода, чтобы увидеть, есть ли в каждом сообщении даже информация из третьей таблицы (она может быть пустой).

Теперь, мой вопрос, может ли это быть реализовано болееэффективный способ?Таким образом, к базе данных может быть много запросов.

Проблема здесь заключается в том, как соотносить новые сообщения.Я посмотрел на «SELECT INTO», но так как мне нужно связать новые ключи, я не вижу, как это могло бы работать.Кроме того, mysql_insert_id дает мне только последний идентификатор, а не все.

1 Ответ

0 голосов
/ 04 июля 2010

Обычно самый быстрый и самый элегантный способ дублирования строки, о которой я знаю, это:

Дублирование строки:

INSERT INTO tablename SELECT * FROM tablename WHERE id = 1;

запрос идентификатора новой записи:

SELECT LAST_INSERT_ID() AS lastID;  

Сохранение этого идентификатора в переменной PHP (здесь не показано) и последующее обновление ключа в зависимых таблицах:

UPDATE related_table_name SET key = '$lastID'

(id должен быть столбцом с автоинкрементом для этогодля работы, и LAST_INSERT_ID () должен использоваться сразу после вставки.)

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...