我正在查询一个班级,需要根据他们是否拥有奇瓦瓦狗来选择宠物主人的名字。

我必须使用两个表,PetOwner和Pet。 PetOwner具有所有者编号(ownerNo),所有者名称(oLName,oFName),而Pet具有所有者编号和petType。这是我尝试使用的代码:

SELECT
    PetOwner.oFName,
    PetOwner.oLName
FROM
    PetOwner,
    Pet
WHERE
    PetOwner.ownerNo = (SELECT
                            Pet.ownerNumber
                        FROM
                            Pet
                        WHERE
                            Pet.petType = 'Chihuahua'
                        );


错误消息为“未知命令以“ Pet.petTyp ...开始”-其余行被忽略。我知道问题出在WHERE子句中,但是我似乎无法将其调整到可以工作的地方,而且我相信答案是显而易见的。

我只需要再看看另一只眼睛即可。

我怎样才能做到这一点 ?

最佳答案

在您的查询内:

SELECT PetOwner.oFName, PetOwner.oLName
FROM PetOwner, Pet


您在此处提到了“宠物”表。表'Pet'在这里不应该提及,因为您是从表'PetOwner'而不是'Pet'中选择oFName和oLName。

一个简单的联接查询将为您提供所需的确切信息。无需以上述方式使用子查询。您需要在Pet.petType为'Chihuahua'的情况下,根据PetOwner.ownerNo = Pet.ownerNumber将Pet表与PetOwner表联接。

这样完成的查询是:

SELECT po.oFname, po.oLName
FROM PetOwner as po
JOIN Pet as p
ON po.ownerNo = p.ownerNumber
WHERE p.petType = 'Chihuahua'

07-28 13:49