построить таблицу из выбора / объединения - PullRequest
0 голосов
/ 22 сентября 2019

У меня сборка реляционных таблиц из файла CSV, содержащего внешние ключи в каждой строке.

структура таблицы:

| id | tree/nome | tree/regioni/0 | .... | tree/regioni/n     

"n" равно 36 !!!Я создал таблицу "регионов" из "SELECT / DINSTICT", и я добавил идентификатор на него;

теперь мне нужно создать другую таблицу для извлечения "внешних ключей" "tree / regioni / n" с "id" каждой строки.

НЕ умный способ, который я нашел длядобиться этого - построить таблицу из SELECT / UNION каждого дерева / regioni / n:

SELECT `id`,`tree/regioni/0`
FROM `trees` WHERE 1 
UNION 
SELECT `id`,`tree/regioni/1`
FROM `trees` WHERE 1  
[.....]
UNION 
SELECT `id`,`tree/regioni/N`
FROM `trees` 
WHERE 1

1 Ответ

0 голосов
/ 22 сентября 2019

Ваш метод в порядке.Если trees где вид, то у вас будет проблема с оценкой вида несколько раз.Даже с таблицей вам придется сканировать таблицу несколько раз.

Если у вас нет дубликатов, которые вы хотите удалить, замените union на union all.Вы также можете использовать cross join:

select t.id,
       (case when n = 1 then `tree/regioni/0`
             when n = 2 then `tree/regioni/1`
             . . .
        end)
from t cross join
     (select 0 as n union all
      select 1 as n union all
      . . .
     ) x;

Это выглядит сложнее, но только один раз сканирует / оценивает табличные выражения.

...