Sql 连接表达式不明确
我的ddl脚本如下所示:Sql 连接表达式不明确,sql,left-join,Sql,Left Join,我的ddl脚本如下所示: CREATE TABLE CPR_ENTITIES ( ENTITY_ID NUMBER(20) NOT NULL, SYSTEM_ID NUMBER(4), ENTITY_TYPE_ID NUMBER(8), GLOBAL_UID VARCHAR2(1000), SYS_OBJ_UID VARCHAR2(1000), ENTITY_NAME VARCHAR2(1000), CAGE_COD
CREATE TABLE CPR_ENTITIES
(
ENTITY_ID NUMBER(20) NOT NULL,
SYSTEM_ID NUMBER(4),
ENTITY_TYPE_ID NUMBER(8),
GLOBAL_UID VARCHAR2(1000),
SYS_OBJ_UID VARCHAR2(1000),
ENTITY_NAME VARCHAR2(1000),
CAGE_CODE VARCHAR2(2000),
REVISION VARCHAR2(2000),
ENTITY_CREATION_DATE NUMBER(20),
ENTITY_MODIFICATION_DATE NUMBER(20),
RELEASE_DATE NUMBER(20),
.......................,
........................
CONSTRAINT "CPR_ENTITIES_PK" PRIMARY KEY ("ENTITY_ID"),
CONSTRAINT "CPR_ENTITIES_FK1" FOREIGN KEY ("SYSTEM_ID") REFERENCES CPR_SOURCE_SYSTEM_METADATA("SYSTEM_ID"),
CONSTRAINT "CPR_ENTITIES_FK2" FOREIGN KEY ("ENTITY_TYPE_ID") REFERENCES CPR_ENTITY_METADATA("ENTITY_TYPE_ID"));
CREATE TABLE CPR_ENTITY_ATTRIBUTE
(
VAL_ID NUMBER(20) NOT NULL,
ENTITY_ID NUMBER(20),
ATT_ID NUMBER(10),
STRING_VALUE VARCHAR2(4000),
NUM_VALUE NUMBER(10,2),
TIMESTAMP_VALUE TIMESTAMP,
CREATED_BY VARCHAR2(200),
MODIFIED_BY VARCHAR2(200),
CREATED_ON NUMBER(20),
MODIFIED_ON NUMBER(20),
IS_DELETED VARCHAR2(1),
CONSTRAINT "CPR_ENTITY_ATTRIBUTE_PK" PRIMARY KEY ("VAL_ID"),
CONSTRAINT "CPR_ENTITY_ATTRIBUTE_FK1" FOREIGN KEY ("ENTITY_ID") REFERENCES CPR_ENTITIES("ENTITY_ID"),
CONSTRAINT "CPR_ENTITY_ATTRIBUTE_FK2" FOREIGN KEY ("ATT_ID") REFERENCES CPR_ENTITY_ATTRIBUTE_METADATA("ATT_ID")
);
联接表达式:
SELECT CPR_ENTITIES.ENTITY_ID, CPR_ENTITY_ATTRIBUTE.STRING_VALUE
FROM CPR_ENTITIES
LEFT JOIN CPR_ENTITIES
ON CPR_ENTITIES.ENTITY_ID = CPR_ENTITY_ATTRIBUTE.ENTITY_ID;
错误提示:
第1行错误:ORA-00904:“CPR\u实体\u属性”。“实体\u ID”:
无效标识符
也许是这样
SELECT CPR_ENTITIES.ENTITY_ID, CPR_ENTITY_ATTRIBUTE.STRING_VALUE
FROM CPR_ENTITIES
LEFT JOIN CPR_ENTITY_ATTRIBUTE
ON CPR_ENTITIES.ENTITY_ID = CPR_ENTITY_ATTRIBUTE.ENTITY_ID;
试一试
您尝试从表CPR\u ENTITY\u属性中选择一列,但该表未包含在查询中…您没有
CPR\u ENTITY\u属性位于from
或JOIN
选择CPR\u ENTITIES。ENTITY\u ID,CPR\u ENTITY\u属性。CPR\u ENTITIES中的字符串\u值,CPR_实体_属性左键连接CPR_实体上的CPR_实体。实体_ID=CPR_实体_属性。实体_ID;在查询中,您将CPR_ENTITIES表与同一个表联接。您需要这样使用:从CPR\u ENTITIES中选择CPR\u ENTITIES.ENTITY\u ID、CPR\u ENTITY\u ATTRIBUTE.STRING\u值在CPR\u ENTITIES.ENTITY\u ID=CPR\u ENTITY\u ATTRIBUTE.ENTITY\u ID上左连接CPR\u ENTITY\u属性;是的,上面的左连接为我提供了实体ID,但不是STRING_VALUE列中的值,是否应该修改查询?是的,上面的左连接为我提供了实体ID,而不是CPR_实体的字符串_值列中的值_ATTRIBUTE@SteffiDas在CPR\u ENTITY\u属性
中是否有这样的ENTITY\u ID
行?是,CPR_entity_属性中的实体_id是其外键和CPR的主键_ENTITIES@SteffiDasCPR\u ENTITY\u ATTRIBUTE.ENTITY\u ID
是外键这一事实并不意味着该行存在于CPR\u ENTITY\u ATTRIBUTE
中。是的,我知道,但CPR\u ENTITY\u属性中有针对该ENTITY\u ID的数据
SELECT CPR_ENTITIES.ENTITY_ID, CPR_ENTITY_ATTRIBUTE.STRING_VALUE
FROM CPR_ENTITIES
LEFT JOIN CPR_ENTITY_ATTRIBUTE
ON CPR_ENTITIES.ENTITY_ID = CPR_ENTITY_ATTRIBUTE.ENTITY_ID;