2013-01-17 1 views
0

나는 오라클 SQL Developer에서이 개 다른 테이블에서 테이블을 만들려고하고 있어요 : 기본적으로 내가 AS SELECT 만들기 수행하려고SQL 오류 : ORA-00904가 : 유효하지 않은 식별자에서 CREATE AS SELECT

CREATE TABLE share_stock(
    share_id NUMBER(6,0), 
    share_price NUMBER(10,2), 
    company_id NUMBER(6,0), 
    company_name VARCHAR2(50), 
    ticker_symbol VARCHAR2(4), 
AS SELECT share_price.share_price_id, share_price.price, share_price.company_id, company.name, company.ticker_symbol 
FROM share_price, company 
WHERE share_price.company_id = company.company_id, 
CONSTRAINT sh_pk PRIMARY KEY (share_price.share_price_id), 
CONSTRAINT sh_pr_fk FOREIGN KEY (share_price.share_price_id) REFERENCES share_price(share_price_id) 
); 

나는이 오류를 얻고 있지만 :

Error at Command Line:294 Column:28 Error report: SQL Error: ORA-00904: : invalid identifier 00904. 00000 - "%s: invalid identifier"

, ADVA에서

덕분에 내 구문을 해결하기 위해 노력하고 나는 그것이 바로 지금까지, 어떤 아이디어가 도움이 될 것입니다 얻을 관리하지 않은 nce.

+1

필자는이 기능을 사용하지는 않았지만 기능의 이름은 열 정의를 제공하는 대신 'SELECT'에서 열 정보를 가져 오는 것이 좋습니다. –

+0

'CREATE TABLE .. AS'에서 그처럼 열을 지정할 수 없습니다. 열 이름과 유형은 선택 결과에서 가져옵니다. –

답변

4

이 방법을 시도해보십시오

CREATE TABLE share_stock 
AS 
SELECT SP.share_price_id as share_id , 
     SP.price as share_price, SP.company_id, C.name, 
     C.ticker_symbol 
FROM share_price SP 
join company C on SP.company_id = C.company_id; 

alter table share_stock 
add CONSTRAINT sh_pk PRIMARY KEY (share_id); 

alter table share_stock 
add CONSTRAINT sh_pr_fk FOREIGN KEY (share_id) 
REFERENCES share_price(share_price_id); 
+0

고마워요! 그것은 효과가있다! 왜 작동하지 않는지 설명해 주시겠습니까? – Antigoni

+1

올바른 oracle 구문이 아니기 때문에 코드가 작동하지 않습니다. 이 [link] (http://www.techonthenet.com/sql/tables/create_table2.php)를 참조하십시오. 낮은 수용 률을 피하고 쿼리를 닫으려면 대답을 수락하는 것을 잊지 마십시오. 또한 투표를 할 수 있습니다;). – Parado

0

CONSTRAINT sh_pk PRIMARY KEY (을 share_price.share_price_id), CONSTRAINT sh_pr_fk FOREIGN KEY (. ** share_price ** share_price_id) 참조 share_price (share_price_id) );

오라클이 share_price.shareprice_id가 무엇인지 모르기 때문에 코드가 작동하지 않습니까 ??? 테이블 share_stock에 대한 기본 키가 될 열인 share_id를 작성해야합니다.

친절함에 대해서는 MJ.

+0

그건 잘못된 대답입니다. CREATE TABLE ... AS SELECT ...'는 제약 조건 (또는 그 문제에 대한 테이블의 속성)을 정의하는 것을 지원하지 않기 때문에 코드가 작동하지 않습니다. –

관련 문제