SQL соединяет 2 таблицы с условием, принимая некоторые значения по умолчанию NULL из-за условия - PullRequest
0 голосов
/ 17 октября 2018

Я беру некоторые данные из таблиц, используя соединение,

    SELECT da.aName AS aName FROM dbo.bTable 
INNER JOIN aTable da ON dbo.bTable.nameType = da.ID"

Этот выбор работает.Но если nameType - это какое-то новое число, которого нет в da.ID, то эта строка вообще не отображается.я хочу соединить их с таблицами, но если aTable вообще не содержит такого числа, то должны быть приняты некоторые значения по умолчанию.

Вот пример.aTable - это таблица имен

id=1 aName = bmw
id=2 aName= mersedes
id=3 aName= audi

. В bTable есть список автомобилей, и я должен получить их все

1    nameType =1
2    nameType =2
3    nameType =3
4    nameType =5

Таким образом, я должен показать все 4 машины.И с моим кодом я покажу только 3, потому что nameType для машины номер 4 - 5. И такого идентификатора нет в aTable.Результат будет

1 автомобиль bmw

2 автомобиль mersedes

3 автомобиль audi

Что я хочув этом случае aTable может давать значения NULL или что-то в этом роде, поэтому результат должен быть примерно таким:

1 автомобиль bmw

2 автомобиль mersedes

3 автомобильAudi

4, автомобиль NULL

.

Ответы [ 3 ]

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

Вы должны использовать LEFT JOIN вместо INNER JOIN

SELECT da.aName AS aName 
FROM dbo.bTable 
LEFT JOIN aTable da ON dbo.bTable.nameType = da.ID
0 голосов
/ 17 октября 2018

Может быть, вам нужно Outer Join и не использовать Inner Join

, потому что внутреннее объединение выбирает записи, которые имеют совпадающие значения в обеих таблицах

SELECT da.aName AS aName 
FROM dbo.bTable 
LEFT OUTER JOIN aTable da ON dbo.bTable.nameType = da.ID"
0 голосов
/ 17 октября 2018

Вы должны использовать LEFT JOIN вместо INNER JOIN.

...