Объединение двух таблиц со ссылкой на несколько столбцов в SQL Server - PullRequest
0 голосов
/ 22 марта 2019

Можно ли как-нибудь объединить две таблицы на основе нескольких столбцов в SQL Server?

У меня есть две таблицы.

Таблица 1:

id |   Code   | column 2| column 3| column 4 | 
---+----------+---------+---------+----------+
 1 |   ABC    |   6     |   6     |   9      |
 2 |   XYZ    |   7     |   7     |   10     |
 2 |   MNO    |   6     |   6     |   10     |
 3 |   XYZ    |   6     |   7     |   10     | 
 3 |   PQR    |   5     |   6     |   3      |
 4 |   ABC    |   9     |   8     |   8      |
 5 |   MNO    |   1     |   2     |   6      |

Таблица 2:

id | column 1 |  Result
---+----------+--------------
 1 |   ABC    |  Pass
 2 |   XYZ    |  Pass
 2 |   MNO    |  Fail
 3 |   PQR    |  Fail
 5 |   MNO    |  Pass

Теперь я хочу объединить две таблицы со ссылкой на два столбца на основе ID и CODE. Я хочу, чтобы все строки из таблицы 1 и поместили результат только в соответствующую строку таблицы 1.

Мой конечный результат должен быть таким:

id |   Code   | column 2| column 3| column 4 | Result
---+----------+---------+---------+----------+--------
 1 |   ABC    |   6     |   6     |   9      | Pass
 2 |   XYZ    |   7     |   7     |   10     | Pass
 2 |   MNO    |   6     |   6     |   10     | Fail
 3 |   XYZ    |   6     |   7     |   10     | 
 3 |   PQR    |   5     |   6     |   3      | Pass
 4 |   ABC    |   9     |   8     |   8      |
 5 |   MNO    |   1     |   2     |   6      | Pass

Запрос, который я использовал до сих пор:

select 
    tb1.*, tb2.result 
from 
    table1 tb1
left join 
    table2 tb2 on tb1.id = tb2.id and tb1.code = tb2.column1

Является ли этот запрос корректным, поскольку я получаю повторяющиеся строки в таблице 1?

1 Ответ

0 голосов
/ 22 марта 2019

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

select tb1.*,tb2.result from table1 tb1
INNER JOIN table2 tb2
on tb1.id = tb2.id and tb1.code=tb2.column1

enter image description here

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