Объединить две таблицы в SQL Server - PullRequest
0 голосов
/ 15 ноября 2018

у меня к столам

Клиент

CustomerID   Name        Surname
---------------------------------
  1          Adam        Test
  2          Robert      Test2
  3          John        Test3

CustomerAddress

CustomerAddressId  CustomerId     AddressId
-------------------------------------------
1                  1              1
2                  1              2
3                  1              3
4                  2              6
5                  2              7
6                  2              8

Я хочу выбрать CustomerId из этих двух таблиц.

Я написал этот запрос, но он умножил мои записи.

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Если вы хотите захватить клиентов, у которых есть адреса, вы можете использовать следующий скрипт:

SELECT * 
FROM Customer C
WHERE EXISTS (SELECT 1 FROM CustomerAddress CA WHERE C.CustomerId=CA.CustomerId)
0 голосов
/ 15 ноября 2018

Если вы ищете отдельный список CustomerId из обеих таблиц, его будет проще всего использовать UNION:

SELECT CustomerId
FROM Customer
UNION SELECT CustomerId
FROM CustomerAddress

Использование UNION ALL покажет дубликаты в вашем наборе результатов.

0 голосов
/ 15 ноября 2018

Вы можете использовать ключевое слово DISTINCT с JOIN:

SELECT DISTINCT C.CustomerId     
FROM Customer c INNER JOIIN
     CustomerAddress cs
     ON CD.CustomerId = C.CustomerId;

Без DISTINCT будет возвращено несколько CustomerId с, поскольку вторая таблица имеет несколько адресов для одного и того же клиента.

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