在SQLite中,如何编写查询以查找彼此相等的行中的不同列?

时间:2013-02-26 19:46:24

标签: sql ubuntu sqlite

我有一个非常简单的问题,我无法解决SQLite问题。我试图通过reading through a book并按照示例了解有关SQL的更多信息。其中一个练习是编写一个查询,该查询可以找出宠物桌中的哪个宠物是另一个宠物的父母。 pet.id和pet.parent列都使用INTEGER数据类型。所以对于一只宠物,id为2,另一只宠物为3 ...宠物模式有宠物(id,name,breed,parent);结构类型。例如:INSERT INTO pet VALUES(2, "scraps", "lolcat", 3); 会使这个pet.id = 2,pets.name =废料,pet.breed = lolcat,pet.parent = 3。在此表中,一些宠物也将成为其他宠物的父母。所以他们的pet.id也会匹配其他宠物的parent.id ......(看起来有点复杂)

我编写了一个我认为可以创建的查询,但它不返回任何结果或抛出任何错误。该查询是:        SELECT pet.name, pet.breed FROM pet WHERE pet.parent = pet.id;

1 个答案:

答案 0 :(得分:0)

如果你在谈论exercise 13:它实际上说:

  

写一个查询,可以找到给定宠物的孩子的宠物。

所以你有一个特定的父宠物及其ID,并且你正在搜索所有具有该parent ID ID的宠物:

SELECT * FROM pet WHERE parent = 3

要查找所有与孩子/父母关系中的宠物,您必须同时进行涉及两个不同宠物的查询;这需要加入。 在这种情况下,这些记录来自相同的表有额外的皱纹,因此有必要使用别名(AS)重命名一个或两个表,以便我们可以解决他们的专栏毫不含糊:

SELECT parent.name,
       parent.breed,
       child.name,
       child.breed
FROM      pet AS parent
     JOIN pet AS child
     ON parent.id = child.parent
WHERE ...    -- if needed