【发布时间】:2019-05-08 20:13:11
【问题描述】:
我正在尝试创建一个 SQL 查询,它可以从表中选择多个条目并将这些条目输入到同一行的不同列中。
例子:
表1“人”
|---------------------|------------------|------------------|
| PersonID | FirstName | LastName |
|---------------------|------------------|------------------|
| 1 | John | Smith |
|---------------------|------------------|------------------|
| 2 | Jane | Doe |
|---------------------|------------------|------------------|
表 2“电话类型”
|---------------------|------------------|
| PhoneTypeID | Name |
|---------------------|------------------|
| 1 | Home |
|---------------------|------------------|
| 2 | Work |
|---------------------|------------------|
| 3 | Mobile |
|---------------------|------------------|
表 3“电话号码”
|---------------------|------------------|------------------|
| PersonID | PhoneTypeID | PhoneNumber |
|---------------------|------------------|------------------|
| 1 | 1 | 12300 |
|---------------------|------------------|------------------|
| 2 | 1 | 45600 |
|---------------------|------------------|------------------|
| 2 | 2 | 78900 |
|---------------------|------------------|------------------|
SQL 查询的预期结果:
|------------------|---------------|---------------|---------------|
| FirstName | LastName |HomePhoneNumber|WorkPhoneNumber|
|------------------|---------------|---------------|---------------|
| John | Smith | 12300 | NULL |
|------------------|---------------|---------------|---------------|
| Jane | Doe | 45600 | 78900 |
|------------------|---------------|---------------|---------------|
我想从 PhoneNumber 表中选择家庭和工作电话号码,并将它们写在同一行的不同列中。
查询应该看起来像这样:
SELECT Person.FirstName, Person.LastName, PhoneNumber.PhoneNumber AS HomePhoneNumber, PhoneNumber.PhoneNumber AS WorkPhoneNumber
FROM Person
LEFT OUTER JOIN PhoneNumber ON Person.PersonID = PhoneNumber.PersonID
LEFT OUTER JOIN PhoneType ON PhoneType.PhoneTypeID = PhoneNumber.PhoneTypeID
WHERE PhoneType.PhoneTypeID = 'Home'
OR PhoneType.PhoneTypeID = 'Work'
【问题讨论】:
标签: sql