Две таблицы, связанные внешним ключом - PullRequest
0 голосов
/ 13 марта 2012

Мне нужно соединить две таблицы в SQL Server: Table A имеет первичный ключ с именем IDTableA (integer поле), а Table B имеет первичный ключ IDTableB (также integer поле).

Table A содержит внешний ключ IDTableB, поэтому я хочу соединить обе таблицы, это поле имеет тип integer и его значение равно 0.

Моя проблема в том, что, поскольку в Table B нет записи с идентификатором 0, не показывайте мне эти записи из таблицы A, где 0 хранится во внешнем ключе.

Связь между обеими таблицами такова: запись в Table A может принадлежать одной записи или ее отсутствовать в таблице B. Поэтому значение внешнего ключа по умолчанию в таблице A по умолчанию равно 0.

Я попытался соединить таблицы с INNER JOIN и LEFT OUTER JOIN, но это не сработало и не показало никаких записей. Что я могу сделать?

Спасибо.

Мой оператор SQL:

Select TableA.* 
From TableA 
inner join TableB on TableA.IdTableB = TableB.IdTableB

Решение:

    Select TableA.* 
    From TableA 
    LEFT JOIN TableB on TableA.IdTableB = TableB.IdTableB

Подробнее: LEFT JOIN против LEFT OUTER JOIN в SQL Server

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Попробуйте использовать только левое соединение

Примерно так

Select *
from table_1 tbl1
left join table_2 tbl2 on tbl2.id = tbl1.id
0 голосов
/ 13 марта 2012

Внутреннее соединение - это самая распространенная операция соединения, используемая в приложениях, и ее можно рассматривать как тип соединения по умолчанию. Внутреннее объединение создает новую таблицу результатов, комбинируя значения столбцов двух таблиц (A и B) на основе предиката соединения. Запрос сравнивает каждую строку A с каждой строкой B, чтобы найти все пары строк, которые удовлетворяют предикату соединения. Когда предикат соединения удовлетворяется, значения столбцов для каждой подходящей пары строк A и B объединяются в строку результатов.

FROM Table A <renametablehere>
Inner Join Table B <renametablehere>
On <renamedtablename for A>.ID = <renamed table name for b>B.ID
...