У меня есть запрос на вставку MySQL, который в настоящее время вставляет значения параметров одной строки для данного элемента id. Мне нужно реорганизовать его так, чтобы он вставлял несколько строк таблицы соединений, по одному для каждого параметра, где имя и значение параметра и вставлено для каждой строки вместо одной строки.Как реорганизовать запрос вставки одной строки в несколько строк вставить запрос в mysql?
В текущем запросе есть сложные подзапросы, которые я опускаю здесь в этом упрощенном примере ниже. Моя цель состоит в том, чтобы иметь возможность реорганизовать верхнюю часть и оставить подзапросы такими, какими они есть, если это означает, что она обертывает новый верхний уровень вокруг всего, что хорошо.
INSERT INTO parameters (
item_id
category,
color,
size,
weight,
pressure,
price)
(
SELECT * FROM (
SELECT
item_id
c_from_box AS category_id,
c_from_pack AS color,
s_from_ship AS size,
w_from_ship AS weight,
p_from_box AS pressure,
p_from_acc AS price
FROM
FROM_PART_NUMBER_SUBQUERY
WHERE
WHERE_LOGIC_FOR_SUBQUERY
)
WHERE
SOME_OTHER_WHERE_LOGIC
)
мне нужно реорганизовать его так, вместо таблицы параметров, имеющую столбец для параметра, его столбец для идентификатора параметра. Таким образом, вместо этого:
item_id
category,
color,
size,
weight,
pressure,
price
это
item_id
parameter_id, value
где parameter_ids являются возможности соответствующих имен параметров (имя и идентификатор из другой таблицы):
category, // parameter_id: 1
color, // parameter_id: 2
size, // parameter_id: 3
weight, // parameter_id: 4
pressure, // parameter_id: 5
price // parameter_id: 6
Я по существу хотите переставить вставку нескольких столбцов в несколько строк, но это должно быть одно общее выполнение запроса верхнего уровня, даже если оно вложено в несколько подзапросов. Каковы мои варианты для этого?
Хм - хорошо, так что же такое «окончательный»? Новая таблица? Цель состояла в том, чтобы получить итоговую таблицу с одним конечным результатом так же, как и раньше, но только с другой схемой. Вы предлагаете использовать две таблицы? Будет ли промежуточная таблица временной таблицей? – Streamline
Это единственный способ сделать это, чтобы вытащить из промежуточной таблицы, в которую первая вставка вводит свои результаты? Или можно было бы сделать такой же подход, описанный выше, путем вытаскивания из псевдонима в текущую вставку, которая обрабатывается как подзапрос select и insert? – Streamline
Вы упомянули о необходимости реорганизации в таблицу с тремя столбцами, «final» - это та таблица. – patrickmdnet