我正在查询一个类,我需要根据他们是否拥有奇瓦瓦狗来选择宠物主人名字。
我必须使用两个表,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子句中,但我似乎无法将其调整到可行的位置,我确信答案是显而易见的。
我只需要第二眼就可以看一遍。
我该怎么做?
答案 0 :(得分:1)
在您的查询中:
SELECT PetOwner.oFName, PetOwner.oLName
FROM PetOwner, Pet
你在这里提到了'宠物'这个表。这里不应该提到表'Pet',因为你从'PetOwner'表中选择oFName和oLName,而不是'Pet'。
简单的连接查询将为您提供您想要的内容。无需以上述方式使用子查询。在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'
答案 1 :(得分:0)
SELECT oFName, oLName
FROM PetOwner
WHERE ownerNo = (SELECT ownerNumber FROM Pet WHERE petType = 'Chihuahua');
答案 2 :(得分:0)
以下查询对我有用:
SELECT ownername
FROM PetOwner
WHERE PetOwner.ownerNo = (SELECT Pet.ownerNo FROM Pet WHERE Pet.petType = 'Chihuahua');
问候。
答案 3 :(得分:0)
您的查询混淆了用于选择父对象或子对象的SQL的SQL。在子查询中为子表提供别名,如下所述:
SELECT
PetOwner.oFName,
PetOwner.oLName
FROM
PetOwner,
Pet
WHERE
PetOwner.ownerNo = (SELECT
p.ownerNumber
FROM
Pet p
WHERE
p.petType = 'Chihuahua'
);