2023年7月27日 星期四

7/27 每日一題(關聯式資料庫 使用 LEFT JOIN)

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. 



# Write your MySQL query statement below
#
SELECT Person.firstName,Person.lastName,Address.city,Address.state FROM Person LEFT JOIN Address on Person.PersonID = Address.personid;


#這邊如果只用INNER JOIN的話 他只會顯示 兩邊都有相符的的資料 也就是 Bob Alice

#但我們期望得到的是Person TABLE的所有紀錄,即使在Address TABLE找不到對應的資料。

#所以我們使用 LEFT JOIN來包含所有Person TABLE 紀錄


























































標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁