Найти в Дзене
Skill Up In IT

175. Combine Two Tables

Table: Person +-------------+---------+
| Column Name | Type |
+-------------+---------+
| personId | int |
| lastName | varchar |
| firstName | varchar |
+-------------+---------+ personId — первичный ключ (столбец с уникальными значениями) для этой таблицы.
В этой таблице содержится информация об идентификаторах некоторых лиц, их именах и фамилиях. Table: Address +-------------+---------+
| Column Name | Type |
+-------------+---------+
| addressId | int |
| personId | int |
| city | varchar |
| state | varchar |
+-------------+---------+ addressId — первичный ключ (столбец с уникальными значениями) для этой таблицы.
Каждая строка этой таблицы содержит информацию о городе и штате одного человека с идентификатором = PersonId. Напишите решение, чтобы сообщить имя, фамилию, город и штат каждого человека в Personтаблице. Если адрес a personIdотсутствует в Addressтаблице, сообщите nullвместо этого. Верните таблицу результатов в любом порядке

Table: Person

+-------------+---------+
| Column Name | Type |
+-------------+---------+
| personId | int |
| lastName | varchar |
| firstName | varchar |
+-------------+---------+

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

Table: Address

+-------------+---------+
| Column Name | Type |
+-------------+---------+
| addressId | int |
| personId | int |
| city | varchar |
| state | varchar |
+-------------+---------+

addressId — первичный ключ (столбец с уникальными значениями) для этой таблицы.
Каждая строка этой таблицы содержит информацию о городе и штате одного человека с идентификатором = PersonId.

Напишите решение, чтобы сообщить имя, фамилию, город и штат каждого человека в Personтаблице. Если адрес a personIdотсутствует в Addressтаблице, сообщите nullвместо этого.

Верните таблицу результатов в любом порядке .

Формат результата приведен в следующем примере.

Example 1:

Input:
Person table:
+----------+----------+-----------+
| personId | lastName | firstName |
+----------+----------+-----------+
| 1 | Wang | Allen |
| 2 | Alice | Bob |
+----------+----------+-----------+
Address table:
+-----------+----------+---------------+------------+
| addressId | personId | city | state |
+-----------+----------+---------------+------------+
| 1 | 2 | New York City | New York |
| 2 | 3 | Leetcode | California |
+-----------+----------+---------------+------------+
Output:
+-----------+----------+---------------+----------+
| firstName | lastName | city | state |
+-----------+----------+---------------+----------+
| Allen | Wang | Null | Null |
| Bob | Alice | New York City | New York |
+-----------+----------+---------------+----------+
Объяснение:
В таблице адресов для personId = 1 нет адреса, поэтому мы возвращаем null в его городе и штате.
addressId = 1 содержит информацию об адресе personId = 2.

Мы можем использовать левое соединение для соединения Person таблицы с Address таблицей при условии Person.personId = Address.personId, что даст нам имя, фамилию, город и штат каждого человека. Если адрес a personId отсутствует в Address таблице, он будет представлен как null.

SELECT firstName, lastName, city, state
FROM
Person
LEFT JOIN Address USING (personId);