2010-07-09 2 views
0

내가 뭘 잘못하고 있니? 외래 키를 만들 필요가 있지만 CONSTRAINT에서 시작하는 코드는 어딘지 잘못되었습니다. 또한 내보기에 도움이 필요합니다. 하위 쿼리를 잘못 작성한 것 같아요. 도와 주실 수 있습니까?간단한 외래 키/만들기 질문보기

CREATE TABLE dealer(
dealershipId CHAR(10), 
phone CHAR(10), 
dealershipName CHAR(10), 
webAddress char (10), 
street CHAR (10), 
city char (10), 
zip char (5), 
mCapacity INT, 
managerFName CHAR (10), 
managerLName CHAR (10), 
PRIMARY KEY (dealershipId)); 

CREATE TABLE automobiles(
autoId CHAR (4), 
vehiclecode VARCHAR (15), 
manufacturer VARCHAR(15), 
model VARCHAR (20), 
style VARCHAR (5), 
color VARCHAR (10), 
ownership VARCHAR (8), 
PRIMARY KEY (autoId) 
CONSTRAINT fkHasRep FOREIGN KEY (dealershipId) 
REFERENCE dealer(dealershipId) ON DELETE RESTRICT 
); 

--7. 
CREATE VIEW division AS 
SELECT dealershipName, webAddress, phone 
FROM dealer 
WHERE dealershipId IN 
(SELECT manufacturer, model, style, ownership 
FROM automobiles); 

--8. 
SELECT phone, manufacturer, model 
FROM division; 

답변

1

당신은 차 KED & 외래 키 사이의 쉼표를 놓치고 :

CREATE TABLE automobiles(
autoId CHAR (4), 
vehiclecode VARCHAR (15), 
manufacturer VARCHAR(15), 
model VARCHAR (20), 
style VARCHAR (5), 
color VARCHAR (10), 
ownership VARCHAR (8), 
PRIMARY KEY (autoId), 
CONSTRAINT fkHasRep FOREIGN KEY (dealershipId) 
REFERENCE dealer(dealershipId) ON DELETE RESTRICT 
); 

MySQL의 뷰는 뷰에서 하위 쿼리 (오류 # 1349) 허용하지 않음 - restrictions are documented here합니다. 그래서 대신 참가를 사용 변환 :

CREATE VIEW division AS 
    SELECT d.dealershipName, d.webAddress, d.phone, a.* 
    FROM DEALER d 
    JOIN AUTOMOBILES a ON d.dealershipid IN (a.manufacturer, 
               a.model, 
               a.style, 
               a.ownership); 
+0

부품이 고치고 자동차 테이블에 dealershipId가 없습니다. 이제 그 견해로 나를 도울 수 있니? –

+0

@Michael Quiles : 업데이트 –

+0

이 작동하지 않으면 딜러 테이블의 데이터 만 가져오고 자동차 테이블은 추가되지 않습니다. –

1

내 생각 엔 자동차 테이블에 딜러 ID가없는 것 같습니다.

중첩 된 선택 쿼리에 하나의 필드 만 포함 할 수 있으므로보기가 작동하지 않습니다. 아마도 INNER 또는 OUTER JOIN을 사용하기 위해 다시 작성할 수 있습니다.

+0

이것은 우리가 클래스에서 비슷한 것을 얻을 수 있다고 생각하는 하위 쿼리를 사용하여 수행 한 것으로되어 있지만 더 설명되지 않았습니다. 7. 선택한 모델에 두 테이블의 필드가 포함 된 VIEW를 만듭니다. –

1

기본 Myisam 엔진은 외래 키를 지원하지 않습니다. CREATE TABLE 문에 Innodb 엔진을 지정하십시오.

CREATE TABLE dealer(
dealershipId CHAR(10), 
phone CHAR(10), 
dealershipName CHAR(10), 
webAddress char (10), 
street CHAR (10), 
city char (10), 
zip char (5), 
mCapacity INT, 
managerFName CHAR (10), 
managerLName CHAR (10), 
PRIMARY KEY (dealershipId)) ENGINE = Innodb;