代码之家  ›  专栏  ›  技术社区  ›  Bachir Messaouri

SQL内部联接和外键

  •  0
  • Bachir Messaouri  · 技术社区  · 5 年前

    我有两张桌子。

    1. 表“persons”包括“id”、“fname”、“lname”。

    我想打印每个家长的名字+姓氏和他们的孩子的名字。

    George|Cameron|Eddy|Cameron       //Father-son
    George|Cameron|Stephen|Cameron    //Father-son
    George|Cameron|Lynda|Cameron      //Father-daughter
    Elisabeth|Cameron|Eddy|Cameron    //Mother-son
    Elisabeth|Cameron|Stephen|Cameron //Mother-son
    Elisabeth|Cameron|Lynda|Cameron   //Mother-daughter
    etc...
    

    我做了这样的东西:

    SELECT 
        persons.fname, //parents fname  => yes, it works
        persons.lname, //parents lname  => yes, it works
        ?,             //children fname => I have no clue
        ?              //children lname => I have no clue
    FROM
        persons
    INNER JOIN
        relationships
    ON
        persons.id = relationships.parent 
    

    我知道我快到了,但我就是不知道该打什么而不是“?”。 因为,基本上,我需要两次来自完全相同领域的信息,但一次是作为父母,一次是作为孩子。 但是,我如何表明我需要前两个参数的父名称和后两个参数的子名称(因为它们都是“persons.fname”和“persons.lname”)?

    附言:如果我可以问最简单和直接的方式,以便我可以学习的基础知识,我会很感激。

    1 回复  |  直到 5 年前
        1
  •  1
  •   stimms    5 年前

    可能最简单的方法是使用表别名。

    SELECT 
        parent.fname, //parents fname  
        parent.lname, //parents lname  
        children.fname, //children fname 
        children.lname  //children lname 
    FROM
        persons parent
    INNER JOIN
        relationships
    ON
        persons.id = relationships.parent 
    INNER JOIN
       persons children
    ON relationships.child = children.id
    

    这允许您引用同一个表两次,但使用不同的别名,这样您就可以保持它们的笔直。

    推荐文章