Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
Sql 内部联接中的错误_Sql_Oracle_Oracle11g - Fatal编程技术网

Sql 内部联接中的错误

Sql 内部联接中的错误,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我试图练习内部联接,但徒劳无功。我在执行内部联接语句时出现了“表不存在”错误,即使我已经创建了表,并且存在数据 请帮我解决这个问题。另外,它还显示客户已从连接图的其余部分断开连接 我曾尝试对表名使用双引号,但它给出了不同的错误 ORA-00904:“客户”。“客户ID”:无效标识符 90400000-%s:无效标识符 *原因: *行动: 它的Oracle 11g和SYS是所有者。问题可能是由于您的create table语句导致的,该语句包含双引号的表名,不是都是大写的。请记住,oracle默认

我试图练习内部联接,但徒劳无功。我在执行内部联接语句时出现了“表不存在”错误,即使我已经创建了表,并且存在数据

请帮我解决这个问题。另外,它还显示客户已从连接图的其余部分断开连接

我曾尝试对表名使用双引号,但它给出了不同的错误

ORA-00904:“客户”。“客户ID”:无效标识符
90400000-%s:无效标识符 *原因:
*行动:


它的
Oracle 11g
SYS
是所有者。

问题可能是由于您的
create table
语句导致的,该语句包含双引号的表名,不是都是大写的。请记住,oracle默认情况下总是以大写形式存储表名和列名,除非您在
create/Alter
语句中使用了大小写不同的双引号字符串。应避免使用整个表名来引用列,因为这是您案例中出现
无效标识符
错误的原因

因此,如果可以的话,可以将表从
“Customers”
重命名为
“Customers”
,将
“Orders”
重命名为
“Orders”
,或者在select查询中对表名使用引号和适当的别名

SELECT
    o.OrderID,
    c.CustomerName
FROM
    "Orders" o
    inner join "Customers" c on o.Customer_Id = c.Customer_Id;

此外,正如@horse已经建议的,在任何示例模式(如HR、SCOTT等)中创建表,而不是在
SYS

中创建表。错误消息表明
Customer\u Id
是无效标识符。你确定这是该列的名称吗?我看到您的另一列名为
OrderID
(没有下划线),所以可能是
CustomerID
?表
Customers
中是否有一列名为
Customer\u Id
您宁愿停止现在正在做的事情。为测试目的创建另一个用户,别管SYS。我的两个表如下创建表“Customers”(Customer_Id Number(25),CustomerName varchar2(35),Address varchar2(30),City varchar2(25));永远不要在SYS或SYSTEM帐户中创建自己的表。创建一个常规用户来完成此操作。不要将SYS帐户用于常规工作。请不要忘记,我已将表重命名为客户和订单,并且我能够成功地执行所有连接。非常感谢您的帮助help@RekhaRao:不客气。请阅读:
SELECT
    o.OrderID,
    c.CustomerName
FROM
    "Orders" o
    inner join "Customers" c on o.Customer_Id = c.Customer_Id;