Выборка связанных элементов из БД

xreal

Новичок
Здравствуйте!

Пишу скрипт частичного копирования БД MySQL. Структуру БД копирую полностью, а вот данные, только те, которые выбраны пользователем. Но на самом деле надо копировать не только те данные, которые выбрал пользователь, но и связанные с ними. Опишу так...

Дано:
1. Множество таблиц с данными.
2. Выбранные пользователем поля в разных таблицах

Задача:
1. Найти все связанные с выбраными таблицы, взять данные (поля), которые связаны с теми, которые выбрал пользователь.
2. Скопировать выбранные и найденные данные(поля) в новую БД.

Буду очень рад помощи.

Заранее спасибо!
 

Absinthe

жожо
xreal ты забыл либо вопрос написать, либо вознаграждение указать.
 

xreal

Новичок
2Absinthe, вообще-то вопрос указан, но могу повторить: как найти все связанные с таблицей, в которой пользователь выбрал поля для копирования, таблицы, а в них выбрать те поля которые, связаны с полями, выбранными пользователями? Я так понимаю что JOIN'ом, но нормально сформулировать запрос у меня не вышло. Вопрос в том, как сформировать SQL запрос.

2Сайз, есть
 

WMix

герр M:)ller
Партнер клуба
ну тогда попытайся получить внешние ключи...
PHP:
SELECT c.referenced_table_name,
       c.referenced_column_name 
  FROM information_schema.key_column_usage c 
 WHERE c.table_schema   = '<database>' 
   AND c.TABLE_NAME     = '<table>';
это нужно делать рекурсивно, отбрасывая то что уже нашел,
создать дерево зависимостей,

ну а далее используя данные написать то что хочешь...

а лучше заранее подумать об этом, написать это дерево зависимостей, и пройтись рекурсивно!
 

WMix

герр M:)ller
Партнер клуба
не нравиться рекурсия или не нравиться слово?
 

Redjik

Джедай-мастер
Ну у меня правило, использую рекурсию только если нужно сделать вложенный массив и при этом без рекурсии не обойтись (короче ну оооочень рекдо). Кстати после этого обычно его еще и кеширую...

В других случаях - первый звоночек пересмотреть архитектуру.
 

WMix

герр M:)ller
Партнер клуба
у заказа есть позиции, выставленные счета, у каждой позиции категория, у счета история и у заказа кстати и у позиции, и тд, сейчас фантазии не хватает (после работы) ... нужно сохранить все...
конечно каждую рекурсию можно обойти интерактивно ( читал где-то ) да и в математике часто встречается как рекурсивная запись так и "обычная"... сам редко использую рекурсию, сказанное слово "рекурсия" в данном случае только для описания идеи!
 
Сверху