2016-07-30 8 views
0

だから、私はこのマザーボードを作成していません。私は正しく私が作成した外部キ​​ーに参加することはできません

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を組み合わせることであると言いますか?それで私はビューの2つのテーブルに参加できないのですか?

+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'; 

注テーブルのエイリアスを書くのは読みするクエリを簡単にすること。 '2015'とわかっているので、にDATEGRADを含める理由はありません。

また、2つのテーブルで列名を同じにすることをお勧めします。原則として、私は外部キー参照が参照する主キーと同じ列名を持つようにしたいと思います。これにより参照が透明になります(これは必ずしも可能ではありませんが、通常は可能です)。

+0

ありがとうございます!今、私は間違いを知っています:) –

関連する問題