我正在查询一个班级,需要根据他们是否拥有奇瓦瓦狗来选择宠物主人的名字。
我必须使用两个表,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'