У меня есть временная таблица в MySQL, как:Как сделать Mysql вставки запроса с несколькими отборного заявлением
CREATE TEMPORARY TABLE RolesAndPermissions(
ParentPermissions VARCHAR(255) DEFAULT NULL,
ChildPermissions VARCHAR(255) DEFAULT NULL,
OrgPermissions VARCHAR(255) DEFAULT NULL);
Теперь у меня есть 3 Нормальных таблиц в моих схемах, которые ParentPermissions
, ChildPermissions
и OrgPermissions
. Каждый из них имеет некоторые значения в нем, которые могут быть одинаковыми во всех этих таблицах, например CanEdit
, CanDelete
и так далее. Теперь то, что я хочу сделать, это получить разрешения от этих таблиц и вставить в таблицу temp. Я использовал this в качестве примера для создания инструкции insert с несколькими запросами на выбор, но почему-то я получаю повторение. Как говорят мои 3 выберите запросы:
SELECT Perm_Name FROM ParentPermissions -> Returns 19 rows
SELECT Perm_Name FROM ChildPermissions -> Returns 19 rows
SELECT Perm_Name FROM OrgPermissions -> Returns 57 rows
Я хочу, чтобы результирующий набор быть точно такой же, как и выше, но им получать 19*19*57=20577
строки в таблице темп. Вот то, что мой запрос выглядит следующим образом:
INSERT INTO
RolesAndPermissions (ParentPermissions,ChildPermissions,OrgPermissions)
SELECT
f1.Perm_Name, f2.Perm_Name, f3.Perm_Name
FROM
(SELECT Perm_Name FROM ParentPermissions)AS f1
CROSS JOIN
(SELECT Perm_Name FROM ChildPermissions)AS f2
CROSS JOIN
(SELECT Perm_Name FROM OrgPermissions)AS f3
Пожалуйста КОНСУЛЬТАЦИЯ
Как вы планируете иметь дело с тем, что 3 наборов результатов разного размера? –
@TimBiegeleisen: Я добавил значение по умолчанию как null, поэтому я ожидаю, что он примет значение null, если значение не найдено? – user9517536248
Если значения 'Perm_Name' из трех таблиц не имеют ничего общего, то вы не можете легко объединить их вместе, потому что нет никакого отношения. –