一个简单的MYSQL视图,用于删除玩家及其守护者的信息

一个简单的MYSQL视图,用于删除玩家及其守护者的信息,mysql,sql,gridview,join,Mysql,Sql,Gridview,Join,我需要创建一个名为phonelist的视图,其中列出每个球员、他们的监护人、监护人的电话号码以及他们所在的球队。我将如何编写此代码。您需要的所有信息都可以在下面找到: 这些是我的桌子: CREATE TABLE Person ( personID INT NOT NULL, name VARCHAR(50), address VARCHAR(70), phone VARCHAR(15), email VARCHAR(30), year INT, PRIMARY KEY (personID) )

我需要创建一个名为phonelist的视图,其中列出每个球员、他们的监护人、监护人的电话号码以及他们所在的球队。我将如何编写此代码。您需要的所有信息都可以在下面找到:

这些是我的桌子:

CREATE TABLE Person
(
personID INT NOT NULL,
name VARCHAR(50),
address VARCHAR(70),
phone VARCHAR(15),
email VARCHAR(30),
year INT,
PRIMARY KEY (personID)
);

CREATE TABLE Player
(
personID INT NOT NULL,
dateOfBirth DATE,
school VARCHAR(30),
PRIMARY KEY (personID),
FOREIGN KEY (personID) REFERENCES Person (personID)
);

CREATE TABLE Team
(
teamID INT NOT NULL,
tName VARCHAR(70),
ageRange VARCHAR(30),
PRIMARY KEY (teamID)
);

CREATE TABLE Coach
(
personID INT NOT NULL,
dateBeganCoaching DATE,
PRIMARY KEY (personID),
FOREIGN KEY (personID) REFERENCES Person (personID)
);

CREATE TABLE coachTeam
(
personID INT NOT NULL, 
teamID INT NOT NULL,
PRIMARY KEY (personID, teamID),
FOREIGN KEY (personID) REFERENCES Coach (personID),
FOREIGN KEY (teamID) REFERENCES Team (teamID)
);

CREATE TABLE playerTeam
(
personID INT NOT NULL, 
teamID INT NOT NULL,
PRIMARY KEY (personID, teamID),
FOREIGN KEY (personID) REFERENCES Player (personID),
FOREIGN KEY (teamID) REFERENCES Team (teamID)
);

CREATE TABLE Guardian
(
parentID INT NOT NULL,
childID INT NOT NULL,
PRIMARY KEY (parentID, childID),
FOREIGN KEY (parentID) REFERENCES Person (personID),
FOREIGN KEY (childID) REFERENCES Person (personID)
);

CREATE TABLE Qualification
(
qualificationID INT NOT NULL,
qName VARCHAR(30),
PRIMARY KEY (qualificationID)
);

CREATE TABLE coachQualification
(
qualificationID INT NOT NULL,
personID INT NOT NULL,
PRIMARY KEY (personID, qualificationID),
FOREIGN KEY (qualificationID) REFERENCES Qualification (qualificationID),
FOREIGN KEY (personID) REFERENCES Coach (personID)
);
我该如何做才能使我只使用person表来引用玩家和守护者,以及我该如何做才能使如果一个玩家有多个守护者,那么两个守护者将被放置在同一行上,而不是在输出中创建一个完整的新行来显示两个守护者

我尝试了以下操作,但出现了错误:

CREATE VIEW phonelist AS 
SELECT Child.name, tName, Parent.name, Parent.phone
FROM playerTeam INNER JOIN Person AS Child ON playerTeam.personID = Child.personID
                INNER JOIN Team ON playerTeam.teamID = Team.teamID
                INNER JOIN Person AS Parent ON Guardian.parentID = Parent.personID;

Select * FROM phonelist ORDER BY name ASC;
啊,好的,编辑以删除人员团队

返回所有玩家、其监护人姓名、电话和监护人团队以及任何没有监护人的玩家;或监护人不属于团队的情况,或球员本身

Select P.ID, P.Name, P2.PersonID, P2.Name, P2.Phone, T2.tName as GuardianTeam
INNER JOIN Player PL on PL.PErsonID=P.PersonID
INNER JOIN Guardian G on G.ParentID = P.PersonID
LEFT JOIN Person P2 on P2.PersonID = G.ChildID
LEFT JOIN Player PL2 on PL2.PersonID = P2.PersonID
LEFT JOIN PlayerTeam PT2 on PT2.PersonID = PT2.PersonID
LEFT JOIN Team T2 on T2.TeamID = PT.TeamID
啊,好的,编辑以删除人员团队

返回所有玩家、其监护人姓名、电话和监护人团队以及任何没有监护人的玩家;或监护人不属于团队的情况,或球员本身

Select P.ID, P.Name, P2.PersonID, P2.Name, P2.Phone, T2.tName as GuardianTeam
INNER JOIN Player PL on PL.PErsonID=P.PersonID
INNER JOIN Guardian G on G.ParentID = P.PersonID
LEFT JOIN Person P2 on P2.PersonID = G.ChildID
LEFT JOIN Player PL2 on PL2.PersonID = P2.PersonID
LEFT JOIN PlayerTeam PT2 on PT2.PersonID = PT2.PersonID
LEFT JOIN Team T2 on T2.TeamID = PT.TeamID

@JustDanyul:未知专栏“Guardian.parentID”在“on”条款中“抱歉,我删除了评论,因为在你回答之前我发现了它:)”以及他们所参与的团队“Guardian所参与的团队或个人,或两者都参与?”@xQbert:不,只是guradian的孩子所参与的团队。你为什么一直删除你的问题?这里不是这样的。如果你不想让人们永久性地看到这些信息,那么就不要发布。@JustDanyul:未知列“Guardian.parentID”在“on”子句中“抱歉,我删除了该评论,因为我在你回答之前发现了它:)“以及他们所参与的团队”《卫报》所扮演的团队或个人,或两者皆有?@xQbert:不,只是古拉迪亚之子所扮演的团队。你为什么一直删除你的问题?这里不是这样的。如果你不想让人们永久性地看到这些信息,那么就不要发布。