как написать коррелированный подзапрос в снежинке - PullRequest
0 голосов
/ 04 января 2019

Не могли бы вы помочь мне, как написать коррелированный подзапрос в снежинке?

select a
       b,
       (select d.x from d inner join b on d.id=b.id) As x,
       (select d.x from d inner join bon d.id!=b.id) AS Y  
FROM a 
inner join b on a.id=b.id

выберите X из таблицы d на основе условия соединения. Выберите другой столбец из той же таблицы на основе другого условия соединения Приведенный выше запрос почти по моему первоначальному сценарию.Можете ли вы помочь мне, как написать тот же запрос в снежинку

1 Ответ

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

Коррелированные подзапросы, как правило, плохая идея, поскольку во многих случаях они приводят к одному запросу на строку, который не масштабируется.Если я правильно читаю ваш запрос, вы можете просто присоединиться к d дважды с разными условиями соединения, чтобы получить x и y.

select
    a.*,
    b.*,
    d1.x as x,
    d2.x as y
from
    a
    join
    b on a.id = b.id
    join
    d as d1 on d.id = b.id
    join
    d as d2 on d.id <> b.id
...