Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 未知命令错误-SQL+/Oracle_Mysql_Sql_Oracle_Sqlplus - Fatal编程技术网

Mysql 未知命令错误-SQL+/Oracle

Mysql 未知命令错误-SQL+/Oracle,mysql,sql,oracle,sqlplus,Mysql,Sql,Oracle,Sqlplus,我正在查询一个类,在这个类中,我需要根据宠物主人是否拥有吉娃娃来选择他们的名字 我得用两张桌子,宠物主人和宠物。宠物主人有一个主人编号ownerNo,主人名称oLName,oFName,宠物有主人编号和宠物类型。以下是我尝试使用的代码: SELECT PetOwner.oFName, PetOwner.oLName FROM PetOwner, Pet WHERE PetOwner.ownerNo = (SELECT

我正在查询一个类,在这个类中,我需要根据宠物主人是否拥有吉娃娃来选择他们的名字

我得用两张桌子,宠物主人和宠物。宠物主人有一个主人编号ownerNo,主人名称oLName,oFName,宠物有主人编号和宠物类型。以下是我尝试使用的代码:

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

一个简单的连接查询将为您提供所需的内容。不需要以上述方式使用子查询。您需要根据PetOwner.ownerNo=Pet.ownerNumber,在Pet.petType为“Chihuahua”的条件下,将Pet表与PetOwner表连接起来

因此,完成的查询是:

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

以下查询对我有效:

SELECT ownername
FROM PetOwner
WHERE PetOwner.ownerNo = (SELECT Pet.ownerNo FROM Pet WHERE Pet.petType = 'Chihuahua');

注意。

您的查询让sql很困惑,要为哪只宠物选择父宠物还是子宠物。在子查询中为子表提供别名,如下所述:

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

什么样的未知错误,比如error no:spxxxxx,我认为在子查询中您没有编写top子句&使用=运算符检查结果。这有区别吗?为子查询表提供别名。详细信息请看我的答案。如果您使用的是SQL*Plus,这是Oracle的命令行客户端,为什么要将其标记为mysql。您真正使用的是哪种数据库管理系统?回顾:请解释一下错误所在。我可能理解,但这不是我们想要的,只是复制粘贴你的代码。这个想法是OP应该理解这个问题。
SELECT 
    PetOwner.oFName, 
    PetOwner.oLName
FROM 
    PetOwner, 
    Pet
WHERE 
    PetOwner.ownerNo = (SELECT 
                            p.ownerNumber 
                        FROM 
                            Pet p
                        WHERE 
                            p.petType = 'Chihuahua'
                        );