Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как создать запрос в MySql для таблицы / 4 сообщений из 4, страница 1 из 1
05.03.2021, 01:41
    #40050913
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос в MySql для таблицы
Есть таблица такого типа

Код: xml
1.
2.
3.
4.
5.
regionId parentRegionId   regionType    
100001  101322................3       
101322  100436................2       
100436  101218................1      
101218  0.....................0     




Как построить запрос, чтоб получить в зависимости от типа regionType новую таблицу где поля уже прописаны

Код: xml
1.
2.
3.
4.
5.
 id........City......State....Country.....Continent
100001..100001.........101322..100436......101218
101322  0            101322 	100436     101218
100436  0            0 	        100436     101218
101218  0            0	        0          101218



База MySql не очень большая не более 3К строк.

Заранее благодарен.
...
Рейтинг: 0 / 0
05.03.2021, 02:25
    #40050916
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос в MySql для таблицы
Sergunka,

Не понимаю, по какой логике получились строки результата, кроме первой. Зачем и откуда там нули?
...
Рейтинг: 0 / 0
05.03.2021, 02:53
    #40050918
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос в MySql для таблицы
miksoft
Sergunka,

Не понимаю, по какой логике получились строки результата, кроме первой. Зачем и откуда там нули?


На самом деле это так был построен ETL процесс до меня. Я вообще просто не в курсе как и чего я смотрю со стороны Java как разработчик.

Но есть и хорошие новости вот как я заимплементировал сам запрос если есть какие либо мысли на этот счет буду признателен. С меня обед (оплачу) в Сан Франциско если будете в наших краях с оказией.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SELECT 
r.type,
r.region_no 
, case    when r.type = 0 then 0 # City
          when r.type = 1 then 0
          when r.type = 2 then 0
          when r.type = 3 then r.region_no
  END as cyty_region_id
, case    when r.type = 0 then 0 # State
          when r.type = 1 then 0
          when r.type = 2 then  r.region_no
          when r.type = 3 then  r.parent_region_no 
  END as state_region_id 
, case    when r.type = 0 then 0 # Country
          when r.type = 1 then r.region_no 
          when r.type = 2 then r.parent_region_no 
          when r.type = 3 then f.parent_region_no 
   END as country_region_id
 , case   when r.type = 0 then r.region_no # Continent
          when r.type = 1 then r.parent_region_no 
          when r.type = 2 then f.parent_region_no 
          when r.type = 3 then s.parent_region_no 
    END as continent_region_id   
FROM region_tbl r
LEFT OUTER JOIN region_tbl f ON r.parent_region_no = f.region_no
LEFT OUTER JOIN region_tbl s ON f.parent_region_no = s.region_no
limit 1000;
...
Рейтинг: 0 / 0
05.03.2021, 07:38
    #40050934
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать запрос в MySql для таблицы
PIVOT средствами MySQL

С другой стороны, для 3к записей это из пушки по воробьям... конструкция на CASE вполне жизнеспособна. Но ещё разумнее создать под это представление отдельную таблицу, и заполнять её таким запросом при каждом изменении исходных данных (которые вряд ли регулярно-частые). Ну и использовать уже готовое представление в нужном виде.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как создать запрос в MySql для таблицы / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]