Оптимизация selectа, сократить код запроса

170
09 марта 2019, 04:10

У меня имеется запрос

select
  p.PERSON_ID,
  p.FIRST_NAME,
  p.MIDDLE_NAME,
  p.LAST_NAME,
  p.GENDER,
  p.BIRTHDAY,
  ua.ADDRES_ID UR_ADDRES_ID,
  ur.REGION_ID UR_REGION_ID,
  ur.NAME UR_REGION_NAME,
  uc.CITY_ID UR_CITY_ID,
  uc.NAME UR_CITY_NAME,
  ud.DISTRICT_ID UR_DISTRICT_ID,
  ud.NAME UR_DISTRICT_NAME,
  us.STREET_ID UR_STREET_ID,
  us.NAME UR_STREET_NAME,
  ua.HOUSE UR_HOUSE,
  ua.HOUSING UR_HOUSING,
  ua.APARTMENT UR_APARTMENT,
  fa.ADDRES_ID FA_ADDRES_ID,
  fr.REGION_ID FA_REGION_ID,
  fr.NAME FA_REGION_NAME,
  fc.CITY_ID FA_CITY_ID,
  fc.NAME FA_CITY_NAME,
  fd.DISTRICT_ID FA_DISTRICT_ID,
  fd.NAME FA_DISTRICT_NAME,
  fs.STREET_ID FA_STREET_ID,
  fs.NAME FA_STREET_NAME,
  fa.HOUSE FA_HOUSE,
  fa.HOUSING FA_HOUSING,
  fa.APARTMENT FA_APARTMENT,
  p.NUMBER_OMS,
  p.NUMBER_SNILS,
  p.NUMBER_PASSPORT,
  p.DATE_ISSUE,
  pd.PASSPORT_DEPARTMENT_ID,
  pd.NAME PASSPORT_DEPARTMENT_NAME,
  pd.CODE,
  pb.ADDRES_ID PB_ADDRES_ID,
  pbr.REGION_ID PB_REGION_ID,
  pbr.NAME PB_REGION_NAME,
  pbc.CITY_ID PB_CITY_ID,
  pbc.NAME PB_CITY_NAME,
  pbd.DISTRICT_ID PB_DISTRICT_ID,
  pbd.NAME PB_DISTRICT_NAME,
  pds.STREET_ID PB_STREET_ID,
  pds.NAME PB_NAME_STREET,
  pb.HOUSE,
  pb.HOUSING,
  pb.APARTMENT,
  gb.GROUP_BLOOD_ID,
  gb.NAME GROUP_BLOOD_NAME,
  p.EMAIL,
  p.TELEPHONE
from
  PERSON p
  join ADDRES ua on ua.ADDRES_ID = p.UR_ADDRES_ID
  join REGION ur on ur.REGION_ID = ua.REGION_ID
  join CITY uc on uc.CITY_ID = ua.CITY_ID
  join DISTRICT ud on ud.DISTRICT_ID = ua.DISTRICT_ID
  join STREET us on us.STREET_ID = ua.STREET_ID
  join ADDRES fa on fa.ADDRES_ID = p.FACT_ADDRES_ID
  join REGION fr on fr.REGION_ID = fa.REGION_ID
  join CITY fc on fc.CITY_ID = fa.CITY_ID
  join DISTRICT fd on fd.DISTRICT_ID = fa.DISTRICT_ID
  join STREET fs on fs.STREET_ID = fa.STREET_ID
  join PASSPORT_DEPARTMENT pd on pd.PASSPORT_DEPARTMENT_ID = p.WHO_GIVE_ID
  join ADDRES pb on pb.ADDRES_ID = p.PLACE_BIRTH_ID
  left join REGION pbr on pbr.REGION_ID = pb.REGION_ID
  join CITY pbc on pbc.CITY_ID = pb.CITY_ID
  left join DISTRICT pbd on pbd.DISTRICT_ID = pb.DISTRICT_ID
  left join STREET pds on pds.STREET_ID = pb.STREET_ID
  left join GROUP_BLOOD gb on gb.GROUP_BLOOD_ID = p.GROUP_BLOOD_ID;

В общем из этих таблиц мне нужно вытащить данные, так как в таблице PERSON есть 2 внешних ключа на таблицу ADDRES приходится использовать псевдонимы, вопрос в том, можно ли как то используя sql в oracle сократить этот запрос и не писать огромную партянку? В MySql есть функции, с помощью которой можно писать:

select *, p.PERSON_ID as PID from PERSON;

но появится дополнительная колонка. Мне бы не хотелось выводить дополнительные колонки, так как вместо 53, будет выводится 72, или это и есть правильная запись запроса? Источники вдохновения:

http://www.dpriver.com/blog/2011/09/27/a-list-of-sql-best-practices/ https://docs.oracle.com/middleware/1221/bip/BIPDM/best_practices.htm#BIPDM534

READ ALSO
Принцип переноса текста в svg?

Принцип переноса текста в svg?

В svg нет тэга br и для переноса используются атрибуты тэга x и dy

161
Не могу вытащить содержимое из ячейки таблицы

Не могу вытащить содержимое из ячейки таблицы

Всем привет, у меня не получается вытащить содержимое из ячейки таблицы html

142
Проблема с safari

Проблема с safari

Подскажите как заставить safari, чтобы оно принимало данный стиль:

153
Как называетя анимация линий CSS

Как называетя анимация линий CSS

Как называется анимация в виде двигающихся линий css

138