使用相同的表和属性来返回不同类型的人

时间:2012-05-24 05:14:47

标签: mysql sql join

我想创建一个使用以下表返回父级及其监护人的查询。我的问题是如何在person表中使用name属性两次来返回看护者的姓名和父母的姓名。任何示例代码将不胜感激。我知道我没有解释得很好,但如果有人理解我的意思,请随意编辑以上内容。更具体地说,我想只使用person表来存储关于父母及其子女的信息,并使用显示每个相关人员的姓名。如何使用单个表格执行此操作。

enter image description here

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

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表中的相同键。在查找父级和子级时如何引用相同的属性而不会出现任何错误。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我无法理解你在寻找什么,无论如何试试这个:

  

从人员p中选择p.name,p.name,其中p.personid在(选择   来自监护人的明显贫困