0

我有一个非常简单的问题,关于 SQLite,我无法理解。我正在尝试通过阅读一本书并遵循示例来了解有关 SQL 的更多信息。其中一个练习是编写一个查询,该查询可以从宠物表中找出哪个宠物是另一只宠物的父母。pet.id 和 pet.parent 列都使用 INTEGER 数据类型。所以对于一只宠物来说,id 是 2,而另一只宠物是 3……宠物模式有宠物(id、名字、品种、父母);结构类型。所以例如:INSERT INTO pet VALUES(2, "scraps", "lolcat", 3); 将使这个pet.id=2,pets.name=scraps,pet.breed=lolcat,pet.parent=3。在此表中,一些宠物也将是其他宠物的父母。所以他们的 pet.id 也会匹配其他宠物的 parent.id ......(看起来有点复杂)

我写了一个查询,我认为从那以后就可以了,但它没有返回任何结果或抛出任何错误。该查询是: SELECT pet.name, pet.breed FROM pet WHERE pet.parent = pet.id;

4

1 回答 1

0

如果您在谈论练习 13:它实际上是说:

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

因此,您有一个特定的父宠物及其 ID,并且您正在搜索以该 ID 作为其parentID 的所有宠物:

SELECT * FROM pet WHERE parent = 3

要找出孩子/父母关系中的所有宠物,您必须同时进行涉及两个不同宠物的查询;这需要一个join。在这种情况下,这些记录来自同一个表还有一个额外的问题,因此有必要使用别名 ( 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
于 2013-02-26T20:17:53.667 回答