Question
Table: Person
+————-+———+
| Column Name | Type |
+————-+———+
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
+————-+———+
PersonId is the primary key column for this table.
Table: Address
+————-+———+
| Column Name | Type |
+————-+———+
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
+————-+———+
AddressId is the primary key column for this table.
Write a SQL query for a report that provides the following information for each person in the Person table, regardless if there is an address for each of those people:
FirstName, LastName, City, State
Solution
Mistake Taken
# Write your MySQL query statement below
select p.FirstName, p.LastName, a.City, a.State
from Person p, Address a
where p.PersonId=a.PersonId
The error is that
Input: {"headers": {"Person": ["PersonId", "LastName", "FirstName"], "Address": ["AddressId", "PersonId", "City", "State"]}, "rows": {"Person": [[1, "Wang", "Allen"]], "Address": []}}
Output: {"headers": ["FirstName", "LastName", "City", "State"], "values": []}
Expected: {"headers": ["FirstName", "LastName", "City", "State"], "values": [["Allen", "Wang", null, null]]}
Although a person has no home, null should be written for City, State. Using left join would be a better choice.
Code
# 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