ВопросСложный SQL запрос в Drupal

Необходимо создать таблицу (table3) в БД, состоящую из 3 колонок.
В качестве selecta берутся 2 колонки из одной таблицы (table1, которая состоит из 3 колонок), и 1 колонка из другой таблицы (table2, которая состоит из двух колонок).
Зависимость такая:

в table1 колонка 1 = колонке 2, они обе связаны с колонкой 3,
при этом колонка 3=колонке 1 в table2
при этом колонка 1 в table2 связана с колонкой 2 в table2

Цель:
В ОДНОМ ЗАПРОСЕ СДЕЛАТЬ ПРИМЕРНО СЛЕДУЮЩЕЕ

INSERT INTO `table3`
(col1, col2)
SELECT col1, col2 FROM `table1`
INSERT INTO `table3`
(col3)
SELECT col2 FROM `table2`
Where col1.table2= col3.table1

Буду благодарен, если подскажите, куда копать

Комментарии

Аватар пользователя PVasili
PVasili написал:

Задачу сложно понять из такой постановки.
Общий путь:
INSERT INTO имя_таблицы_для_вставки (поле1, поле2, ...)
SELECT синоним_таблицы.поле1, синоним_таблицы.поле2, ...
FROM имя_таблицы_1 AS синоним_1
JOIN имя_таблицы_2 AS синоним_2
ON синоним_1.поле_связи = синоним_2.поле_связи
WHERE условия и ограничения

12.01.2012 01:01
Аватар пользователя roxy
roxy написал:

ужаснулся, когда перечитал то, что сам написал вчера ночью. вот более точное описание проблемы - еще актуально!

ДАНО

Таблица field_data_field_link
(entity_id) (id ноды, к которой привязано поле field_link_value)
(field_link_value) (поле, которое привязано к entity_id) // сейчас содержит данные, которые надо изменить на uri из таблицы file_managed

Таблица file_managed
(fid) (id файла) // сейчас равен полю field_link_value таблицы field_data_field_link
(uri) ссылка на файл // эта ссылка должна опубликоваться в поле field_link_value таблицы file_managed

НУЖНО

Написать sql запрос, который
Данные field_link_value заменит на данные uri, учитывая, что field_link_value привязано к entity_id

Подскажите, пожалуйста

12.01.2012 12:14
Аватар пользователя Spleshka
Spleshka написал:

эта ссылка должна опубликоваться в поле field_link_value таблицы file_managed
откуда в таблице {file_managed} появилось поле field_link_value?

id ноды, к которой привязано поле field_link_value
Что понимается под "привязано" ? какие данные там хранятся сейчас?

Пока у меня в голове возникли такие связи:

db_update('field_data_field_link', 'fdfl')
  ->innerJoin('file_managed', 'fm', 'fdfl.field_link_value = fm.fid')
  ->fields(array(
    'fdfl.field_link_value' => 'fm.uri',
  ))
  ->execute();
12.01.2012 14:04

Комментировать