Преобразование соединения старого стиля в новый - PullRequest
0 голосов
/ 14 января 2019

Рассмотрим следующий код:

select (some columns)
from efdan_setup a,crit_efdan_val b,efdan c
where a.dan *= c.code
and b.codef *= c.codef
and b.mhnmis *= c.mhnmis
and b.etmis *= c.etmis
and b.ebdmis *= c.ebdmis
and b.mhnet *= c.mhnet
and b.mhnet_plir *= c.mhnet_plir

Я не очень знаком с соединениями в старом стиле, и я прочитал достаточно, чтобы понять, что я, вероятно, должен изменить это. Интересно, какой новый стиль Equivelant. Мое предположение:

from 
    crit_efdan_val b
    left join efdan c on 
        b.codef = c.codef 
        and b.mhnmis = c.mhnmis 
        and b.etmis = c.etmis 
        and b.ebdmis = c.ebdmis 
        and b.mhnet = c.mhnet
        and b.mhnet_plir = c.mhnet_plir
    right join fdan_setup a on a.dan = c.code

1 Ответ

0 голосов
/ 14 января 2019

Вы почти там - но смешивание левых и правых объединений почти так же плохо, как смешивание материи и антиматерии.
Фактически, некоторые люди (в том числе и я) предпочли бы вообще избегать правых соединений и придерживаться только левых.

Вот как бы я написал это:

from efdan_setup a
left join efdan c
    on a.dan = c.code
left crit_efdan_val b
    on b.codef = c.codef
    and b.mhnmis = c.mhnmis
    and b.etmis = c.etmis
    and b.ebdmis = c.ebdmis
    and b.mhnet = c.mhnet
    and b.mhnet_plir = c.mhnet_plir
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...