3

你们过去都提供了很大的帮助,而我正在努力解决一些问题,所以我有一个问题。

我的 SQL 数据库中有 3 个表,分别称为“孩子”、“父母”和“家庭”。表的结构如下所示。

在此处输入图像描述

这里分别是父母、孩子和家庭表中的一些示例数据。 父母表 子表 家庭表

Family.ChildID 与 Child 表中的 ID 对应,因此 Child.ID 是主键,Family.ChildID 是外键。这同样适用于 Family.ParentID 和 parents.ID

我要做的是选择子表和父表中的所有字段,然后选择家庭表中的“关系”字段。但是条件是我提供了 ChildID,并且我想通过匹配家庭表中的子 ID 和父 ID 来选择相应的父代。

例子:

SELECT * 
FROM Parents, Child, Family 
WHERE (Child.ID = 1 AND (Family.ChildID = 1 AND Parents.ID = Family.ParentID)

我希望这是有道理的。如果您有任何问题,请告诉我。

谢谢

4

2 回答 2

2

您想使用 JOIN 将表链接在一起。您需要将子表连接到家庭表,并将家庭表连接到父表。就像是:

Select c.*, p.*, f.relation from child c
    Left Join family f on f.child_id = c.id
    Left Join parent p on f.parent_id = p.id
    Where c.id = 1
于 2013-01-13T22:22:13.680 回答
1

尝试这个:

SELECT Parents.*, Child.*, Relation
FROM FAMILY
INNER JOIN Parents ON Family.ParentID = Parents.ID
INNER JOIN Child ON Family.ChildID = Child.ID

您可能需要使用LEFT OUTER JOIN而不是INNER.

于 2013-01-13T22:30:02.353 回答