# LeetCode Solution, Easy, 175. Combine Two Tables

# [175. Combine Two Tables](https://leetcode.com/problems/combine-two-tables/)

### 題目敘述

SQL Schema >

    Create table If Not Exists Person (personId int, firstName varchar(255), lastName varchar(255))
    Create table If Not Exists Address (addressId int, personId int, city varchar(255), state varchar(255))
    Truncate table Person
    insert into Person (personId, lastName, firstName) values ('1', 'Wang', 'Allen')
    insert into Person (personId, lastName, firstName) values ('2', 'Alice', 'Bob')
    Truncate table Address
    insert into Address (addressId, personId, city, state) values ('1', '2', 'New York City', 'New York')
    insert into Address (addressId, personId, city, state) values ('2', '3', 'Leetcode', 'California')

Table: `Person`

    +-------------+---------+
    | Column Name | Type    |
    +-------------+---------+
    | personId    | int     |
    | lastName    | varchar |
    | firstName   | varchar |
    +-------------+---------+
    personId is the primary key column for this table.
    This table contains information about the ID of some persons and their first and last names.

Table: `Address`

    +-------------+---------+
    | Column Name | Type    |
    +-------------+---------+
    | addressId   | int     |
    | personId    | int     |
    | city        | varchar |
    | state       | varchar |
    +-------------+---------+
    addressId is the primary key column for this table.
    Each row of this table contains information about the city and state of one person with ID = PersonId.

Write an SQL query to report the first name, last name, city, and state of each person in the `Person` table. If the address of a `personId` is not present in the `Address` table, report `null` instead.

Return the result table in **any order**.

The query result format is in the following example.

**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 |
    +-----------+----------+---------------+----------+
    Explanation:
    There is no address in the address table for the personId = 1 so we return null in their city and state.
    addressId = 1 contains information about the address of personId = 2.

#### 題目翻譯

題目很簡單就是現在有兩張資料表 `Person` 和 `Address`，需要用 `Person` 中的 `personId` 去關聯 `Address` 的資料後，回傳四個欄位的資料 first name, last name, city, 和 state。如果找不到相對應的 `Address` 資料就回傳 `null`。

### 解法解析

這題很單純的就是使用 Join 來做處理，因為是以 `Person` 為基底，所以使用 Inner Join。也因此不用特別設定預設值 `null`。因為會自動找不到關聯的欄位為 `null`。

#### 程式範例

##### SQL

```sql
# Write your MySQL query statement below
SELECT
    p.firstName,
    p.lastName,
    a.city,
    a.state
FROM
    Person p
    LEFT JOIN Address a ON p.personId = a.personId;
```
