2016-07-30 45 views
0

所以我在sql中創建了這個母板,其中沒有任何外鍵。只是主鍵我無法正確加入我創建的外鍵

CREATE TABLE ALUMNI (
ALUMNIID INTEGER CONSTRAINT ALUMN_ID_PK PRIMARY KEY, 
ANAME VARCHAR(30) NOT NULL, 
AADDRESS VARCHAR2(30) NOT NULL, 
AEMAIL VARCHAR2(30) NOT NULL, 
AWORK# INTEGER NOT NULL, 
AHOME# INTEGER, 
ACITY VARCHAR(30) NOT NULL 
); 

再有就是在它繼承/外鍵的ALUMNIID

CREATE TABLE QUALIFICATION 
(QUALIFICATIONID INTEGER CONSTRAINT QUALI_ID PRIMARY KEY, 
DEGREEEARNED VARCHAR2(30) NOT NULL, 
AREASPECIFIED VARCHAR2(30) NOT NULL, 
DISCIPAREA VARCHAR2(30) NOT NULL, 
DATEGRAD VARCHAR2(30) NOT NULL, 
SCHOONAME VARCHAR2(30) NOT NULL, 
QUALI_ALUM INTEGER, 
CONSTRAINT QUALI_ALUM_FK FOREIGN KEY (QUALI_ALUM) REFERENCES 
ALUMNI (ALUMNIID)); 

繼承人在那裏我得到了一些問題的首要這個寶貝表。我嘗試了意見陳述

CREATE VIEW VIEWA AS SELECT ALUMNIID, ANAME, AEMAIL, AWORK#, AHOME#,DATEGRAD FROM ALUMNI,QUALIFICATION WHERE 
ALUMNI.ALUMNIID = QUALIFICATION.ALUMNIID AND 
DATEGRAD = '2015'; 

但產量說

Error starting at line : 1 in command - 
CREATE VIEW VIEWA AS SELECT ALUMNIID, ANAME, AEMAIL, AWORK#, AHOME#,DATEGRAD FROM ALUMNI,QUALIFICATION WHERE 
ALUMNI.ALUMNIID = QUALIFICATION.QUALI_ALUM_FK AND 
DATEGRAD = '2015' 
Error report - 
SQL Error: ORA-00904: "QUALIFICATION"."QUALI_ALUM_FK": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 

是我創建或合併其他表的PK錯了嗎?那就是爲什麼我不能在視圖中加入兩張表格?

+0

'QUALI_ALUM'是對其具有FK約束的字段名稱,您在查詢中使用字段名稱而不是約束名稱。 –

回答

0

首先,您應該修復查詢以使用正確的JOIN語法。問題是您正在使用外鍵引用的名稱而不是列的名稱。您似乎想要:

CREATE VIEW VIEWA AS 
    SELECT a.ALUMNIID, a.ANAME, a.AEMAIL, a.AWORK#, a.AHOME#, q.DATEGRAD 
    FROM ALUMNI a JOIN 
     QUALIFICATION q 
     ON a.ALUMNIID = q.QUALI_ALUM AND 
      q.DATEGRAD = '2015'; 

請注意,表別名使查詢更易於編寫和讀取。我沒有看到在SELECT中包含DATEGRAD的原因,因爲您知道它是'2015'

此外,我會建議您在兩個表中使列名相同作爲一般規則,我喜歡讓外鍵引用與它們引用的主鍵具有相同的列名稱。這使參考透明(這不總是可能的,但通常是這樣)。

+0

謝謝!現在,我知道我的錯誤:) –