从具有关系的多个表中选择数据

时间:2013-01-13 22:17:49

标签: php sql relational-database multiple-tables

过去你们都得到了很大帮助,我正在努力解决问题,所以我有一个问题。

我的SQL数据库中有3个表,称为“Child”,“Parents”和“Family”。表格的结构如下所示。

enter image description here

以下是父母,子女和家庭表中的一些示例数据。 Parents Table Child Table Family Table

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)

我希望这有点道理..如果您有任何疑问,请告诉我。

由于

2 个答案:

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

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