1

我想创建一个使用下表返回父母及其监护人的查询。我的问题是如何使用 person 表中的 name 属性两次来返回看护者的姓名和父母的姓名。任何示例代码将不胜感激。我知道我没有很好地解释它,但是如果有人理解我的意思,请随时编辑上面的内容。更具体地说,我只想使用 person 表来存储有关父母及其子女的信息,并使用显示每个相关人员的姓名。我怎样才能用一张桌子做到这一点。

在此处输入图像描述

使用提供的一些建议,我能够创建查询,但由于我的表有问题,它不起作用。我正在使用下表:

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 Guardian
(
parentID INT NOT NULL,
childID INT NOT NULL,
PRIMARY KEY (parentID, childID)
FOREIGN KEY (parentID) REFERENCES (personID),
FOREIGN KEY (childID) REFERENCES (personID)
);

我应该在哪里使用什么语句才能使其正常工作。我认为问题在于两个外键语句都引用了 person 表中的同一个键。在查找父项和子项时如何引用相同的属性而不会出现任何错误。

4

2 回答 2

3

您可以与一个表连接两次,但您必须使用不同的表别名。

尝试这个:

SELECT
    Child.name,
    Parent.name
FROM Person AS Child
JOIN Guardian
ON Child.personID = Guardian.child
JOIN Person AS Parent
ON Parent.personID = Guardian.parent
于 2012-05-24T05:17:49.770 回答
0

我不明白你在找什么,无论如何试试这个:

select p.name,p.name from person p where p.personid in (select distinct parentid from Guardian)

于 2012-05-24T12:20:12.093 回答