powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как создать запрос в MySql для таблицы
4 сообщений из 4, страница 1 из 1
Как создать запрос в MySql для таблицы
    #40050913
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица такого типа

Код: 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
Как создать запрос в MySql для таблицы
    #40050916
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka,

Не понимаю, по какой логике получились строки результата, кроме первой. Зачем и откуда там нули?
...
Рейтинг: 0 / 0
Как создать запрос в MySql для таблицы
    #40050918
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как создать запрос в MySql для таблицы
    #40050934
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PIVOT средствами MySQL

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


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