我已经设法从我的MySQL数据库中的一些数据创建一个视图,如下所示:
mysql> CREATE VIEW phonelist AS
-> SELECT parent.parentID AS ParentID,
-> ParentPerson.firstName AS ParentFirstName,
-> ParentPerson.lastName AS ParentLastName,
-> ChildPerson.firstName AS PlayerFirstName,
-> ChildPerson.lastName AS PlayerLastName,
-> GuardianHomePhone.homeNumber AS GuardianHomePhone
-> FROM parent
-> JOIN player ON (parent.parentID IN (player.motherID, player.fatherID))
-> JOIN person AS ParentPerson ON (ParentPerson.personID = parent.parentID)
-> JOIN person AS ChildPerson ON (ChildPerson.personID = player.playerID)
-> JOIN addressDetails AS GuardianHomePhone ON (GuardianHomePhone.personID = parent.parentID);
Query OK, 0 rows affected (0.00 sec)
mysql> select * from phonelist;
+----------+-----------------+----------------+-----------------+----------------+-------------------+
| ParentID | ParentFirstName | ParentLastName | PlayerFirstName | PlayerLastName | GuardianHomePhone |
+----------+-----------------+----------------+-----------------+----------------+-------------------+
| 8 | Gregory | Peck | Michael | Peck | 034871234 |
| 9 | Laura | Peck | Michael | Peck | 034871234 |
| 10 | Martha | Petersen | Matt | Petersen | 034724321 |
| 10 | Martha | Petersen | Christopher | Petersen | 034724321 |
| 11 | Chris | Michaels | Richard | Michaels | 034791212 |
| 11 | Chris | Michaels | Shaun | Michaels | 034791212 |
| 12 | Nadine | Michaels | Richard | Michaels | 034791212 |
| 12 | Nadine | Michaels | Shaun | Michaels | 034791212 |
| 13 | Barry | Dackers | Harry | Dackers | 034871996 |
| 14 | Kevin | Mitchell | Daniel | Mitchell | 034742886 |
| 15 | Rebecca | Mitchell | Daniel | Mitchell | 034742886 |
+----------+-----------------+----------------+-----------------+----------------+-------------------+
11 rows in set (0.00 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
创建此视图是一项挑战,但下面的描述是我在导航时遇到的问题:
我还需要使用此视图添加每个玩家所在的团队.因为让团队的名字匹配需要将4个表连接在一起,所以我很难将各种东西合并在一起.我设法创建了一个单独的查询,将玩家与以下团队匹配:
mysql> select person.firstName, person.lastName, team.teamName
-> from person join player on person.personID = player.playerID
-> join teamAllocation on person.personID = teamAllocation.playerID
-> join team on teamAllocation.teamID = team.teamID;
+-------------+----------+------------+
| firstName | lastName | teamName |
+-------------+----------+------------+
| Michael | Peck | U10 Red |
| Christopher | Petersen | U10 Red |
| Richard | Michaels | U11 Orange |
| Shaun | Michaels | U9 Yellow |
| Matt | Petersen | U11 Orange |
| Harry | Dackers | U9 Yellow |
| Daniel | Mitchell | U9 Yellow |
+-------------+----------+------------+
7 rows in set (0.00 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
我在脑海中想象的结果是这样的:
+----------+-----------------+----------------+-----------------+----------------+----------------+-------------------+
| ParentID | ParentFirstName | ParentLastName | PlayerFirstName | TeamName | PlayerLastName | GuardianHomePhone |
+----------+-----------------+----------------+-----------------+----------------+----------------+-------------------+
| 8 | Gregory | Peck | Michael | U10 Red | Peck | 034871234 |
| 9 | Laura | Peck | Michael | U10 Red | Peck | 034871234 |
| 10 | Martha | Petersen | Matt | U11 Orange | Petersen | 034724321 |
| 10 | Martha | Petersen | Christopher | U10 Red | Petersen | 034724321 |
| 11 | Chris | Michaels | Richard | U11 Orange | Michaels | 034791212 |
| 11 | Chris | Michaels | Shaun | U9 Yellow | Michaels | 034791212 |
| 12 | Nadine | Michaels | Richard | U11 Orange | Michaels | 034791212 |
| 12 | Nadine | Michaels | Shaun | U9 Yellow | Michaels | 034791212 |
| 13 | Barry | Dackers | Harry | U9 Yellow | Dackers | 034871996 |
| 14 | Kevin | Mitchell | Daniel | U9 Yellow | Mitchell | 034742886 |
| 15 | Rebecca | Mitchell | Daniel | U9 Yellow | Mitchell | 034742886 |
+----------+-----------------+----------------+-----------------+----------------+----------------+-------------------+
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助我,我将非常感激.对于那些想要使用数据测试查询的人,我已经将架构(DDL)和数据(DML)脚本(一个"粘贴")放在http://pastebin.com/S4iJyJUh.
此外,如果有人认为我有更好的方式来观看,请告诉我.
你已经快完成了,你只需要合并两个查询即可。
CREATE VIEW phonelistWithTeams AS
SELECT parent.parentID AS ParentID,
ParentPerson.firstName AS ParentFirstName,
ParentPerson.lastName AS ParentLastName,
ChildPerson.firstName AS PlayerFirstName,
ChildPerson.lastName AS PlayerLastName,
team.teamName AS TeamName,
GuardianHomePhone.homeNumber AS GuardianHomePhone
FROM parent
JOIN player ON (parent.parentID IN (player.motherID, player.fatherID))
JOIN person AS ParentPerson ON (ParentPerson.personID = parent.parentID)
JOIN person AS ChildPerson ON (ChildPerson.personID = player.playerID)
JOIN addressDetails AS GuardianHomePhone ON (GuardianHomePhone.personID = parent.parentID)
JOIN teamAllocation ON (ChildPerson.personID = teamAllocation.playerID)
JOIN team ON (teamAllocation.teamID = team.teamID);
Run Code Online (Sandbox Code Playgroud)
跑步SELECT * FROM phonelistWithTeams会给你
+----------+-----------------+----------------+-----------------+----------------+------------+-------------------+
| ParentID | ParentFirstName | ParentLastName | PlayerFirstName | PlayerLastName | TeamName | GuardianHomePhone |
+----------+-----------------+----------------+-----------------+----------------+------------+-------------------+
| 8 | Gregory | Peck | Michael | Peck | U10 Red | 034871234 |
| 9 | Laura | Peck | Michael | Peck | U10 Red | 034871234 |
| 10 | Martha | Petersen | Matt | Petersen | U11 Orange | 034724321 |
| 10 | Martha | Petersen | Christopher | Petersen | U10 Red | 034724321 |
| 11 | Chris | Michaels | Richard | Michaels | U11 Orange | 034791212 |
| 11 | Chris | Michaels | Shaun | Michaels | U9 Yellow | 034791212 |
| 12 | Nadine | Michaels | Richard | Michaels | U11 Orange | 034791212 |
| 12 | Nadine | Michaels | Shaun | Michaels | U9 Yellow | 034791212 |
| 13 | Barry | Dackers | Harry | Dackers | U9 Yellow | 034871996 |
| 14 | Kevin | Mitchell | Daniel | Mitchell | U9 Yellow | 034742886 |
| 15 | Rebecca | Mitchell | Daniel | Mitchell | U9 Yellow | 034742886 |
+----------+-----------------+----------------+-----------------+----------------+------------+-------------------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |