Осталось присоединиться к подзапросу.Хотите увидеть несоответствующие строки - PullRequest
0 голосов
/ 20 апреля 2019

Я присоединяю подзапрос к внешнему запросу, и мне нужно видеть результаты всего, даже тех, которые не совпадают.

Я попытался создать временную таблицу для внешнего запроса и временную таблицу для одного внутреннего запроса, а затем попытался присоединиться к этому.Я попытался сделать вставку во внешний запрос, но он дал мне тонну строк.Я имею в виду оператор слияния с целевой таблицей с сопоставлением и несовпадением.

Select 
col a  --- Can have Nulls or blanks in Table A
col b
col c
col d
col e
from table a
left join

( select
col a  This will never have blanks or nulls
col b
col c
col d
col e
from table)b

on a.cola =  b.cola  -- even though there might be nulls in table A show 
                        them. so A.ColA <> B.ColA and carry them to the next subquery
and a.colb = b.colb
and a.colc = b.colc
Left join

Whatever is NUll for ColA will go to the next subquery
(select
col a
col b
col c
col d
col e
from table)C

on a.colb =  b.colb
and a.colc = b.colc

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

Ответы [ 3 ]

0 голосов
/ 20 апреля 2019

выберите различные значения t1.Id, t1.col1, t1.col2, t2.col1 из таблицы t1, оставленные слева, соединяют table2 t2 с t1.Id! = T2.Id

0 голосов
/ 20 апреля 2019

Похоже, вам нужна каскадная логика в join. Ваш вопрос немного расплывчат в деталях, но выглядит примерно так:

Select coalesce(a.cola, c.cola) as cola,
       a.colb, a.colc,
       coalesce(b.cold, c.cold) as cold
       coalesce(b.cole, c.cole) as cole
from a left join
     b
     on a.cola = b.cola and
        a.colb = b.colb and
        a.colc = b.colc left join
     c
     on a.colA is null and  -- or is this b.colA
        a.colb = b.colb and
        a.colc = b.colc
0 голосов
/ 20 апреля 2019

Без более подробной информации о вашем вопросе и dbms, я думаю, что это поможет, но я не уверен:

Select a.*, ISNULL(b.col, c.col) --Will show you the column from b if it matched, or the column from c if there was no match on b
from Table a
left join Table b
on a.col = b.col... --More restrictive criteria here
left join Table c
on a.col = c.col...--Less restrictive criteria here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...