SQL Server - обновление соединения - установка определенных значений в предложении on - PullRequest
0 голосов
/ 12 октября 2018

Новичок SQL Server

Может кто-нибудь объяснить логику обновления ниже с помощью объединения.Я не понимаю настройку определенного значения в предложении 'on' ...

(# c - это крошечная временная таблица с полями: cert, prod, cov, i)

update m
set inieff = i
from tmempt m
    inner join #c on clntcode = '01208' and
                     polno = '00000408' and
                     certno = cert and
                     prodcode = prod and
                     covgcode = cov and
                     rcdsts = 'A'

... так как '..on clntcode =' 01208 'и polno =' 00000408 '' работает в контексте объединения?Я думал, что присоединяется к работе полевых отношений ...

Спасибо J

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Внутреннее соединение простое.Для каждой пары строк в двух таблицах оценивается предложение on.Когда оно оценивается как истинное (то есть не ложное и не NULL), тогда пара проходит фильтр.

Обратите внимание, что в этом условии нет никакой спецификации.Наиболее типичными условиями являются условия равенства на одном или нескольких столбцах.Однако допускаются неравенства, вызовы функций и даже подзапросы.

Определение внешних объединений является лишь небольшим изменением определения inner join.Для внешних объединений строки выводятся из одной или обеих таблиц, даже если предложение on не имеет значения true.

Для внутренних объединений введение условий в on против where действительно имеет значениестиля.Для внешних объединений, некоторые условия могут идти в on, а другие в where.

0 голосов
/ 12 октября 2018

Условия объединения могут иметь любые пункты, которые вам нравятся.

Основная цель - объединить один столбец одной таблицы со столбцом в другой таблице, но его также можно использовать для ограничения строк, которые вы просматриваете в соединяемых таблицах.

Например,что-то вроде этого относительно распространено

select a1.address as postal, a2.address as street
from customer
join address a1 on a1.customerid=customer.id and a1.addresstype='postal'
join address a2 on a2.customerid=customer.id and a2.addresstype='street'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...