2013-10-28 3 views
2

문제점 1 : SQL CREATE TABLE 문을 사용하여 영화 번호, 별표 번호 및 감독 번호와 4 개의 연기 상에 대한 속성이있는 테이블 MOVSTARDIR을 작성하십시오. 기본 키는 참조 무결성이 적용되는 영화 번호, 별표 번호 및 감독자 번호 (모두 3 개)입니다. 감독 번호는 해당 영화의 감독이며 별은 해당 영화에 출연해야합니다. INSERT INTO를 사용하여 MOVSTARDIR을 (기존 테이블에서)로드하십시오.이 SQL 문은 무엇이 잘못 되었습니까?

내 대답 :

CREATE TABLE MOVSTARDIR 
(MVNUM SHORT NOT NULL, STARNUM SHORT NOT NULL, DIRNUM SHORT NOT NULL, BESTF TEXT, BESTM  TEXT, SUPM TEXT, SUPF TEXT) 

ALTER TABLE MOVSTARDIR 
ADD PRIMARY KEY (MVNUM,STARNUM,DIRNUM) 

INSERT INTO MOVSTARDIR 
SELECT MOVIE.MVNUM,STAR.STARNUM,DIRECTOR.DIRNUM... BESTF,BESTM,SUPM,SUPF 
FROM MOVSTAR, DIRECTOR, MOVIE 
WHERE MOVSTAR.MVNUM=MOVIE.MVNUM 
AND MOVIE.DIRNUM=DIRECTOR.DIRNUM` 

* 나에게 뭔가 잘못이다라는 오류를주는 그것의 문 "테이블을 만들고"하고는 SQL 문에서 단어 "변경"을 강조한다. 또한 참조 무결성을 어떻게 추가합니까? *

문제 2 : MOVSTARDIR의 감독을 표에 포함 된 4 가지 수상 카테고리에서 얻은 총상과 함께 나열하십시오. 감독 이름 (번호가 아님)과 4 가지 범주의 수 및 4 가지 범주 모두의 합계를 나열하십시오. 디렉터 이름으로 보고서를 그룹화합니다 (예 : 디렉터 당 한 줄, 각 디렉터가 한 번 표시). 합계 (내림차순)로 보고서를 그룹화합니다. 합은 모든 레코드를 나열이다이 더 3보다

SELECT DISTINCT DIRNAME, COUNT(BESTF) AS BESTFE, COUNT(BESTM) AS BESTML, 
COUNT(SUPM) AS SUPML, COUNT(SUPF) AS SUPFE, 
(COUNT(BESTM) COUNT(BESTF) COUNT(SUPM) COUNT(SUPF)) AS TOTAL 
FROM MOVSTARDIR, DIRECTOR 
WHERE MOVSTARDIR.DIRNUM=DIRECTOR.DIRNUM 
AND ((BESTM IS NOT NULL) OR (BESTF IS NOT NULL) OR (SUPM IS NOT NULL) 
OR (SUPF IS NOT NULL)) 
GROUP BY DIRNAME 
HAVING (COUNT(BESTM) COUNT(BESTF) COUNT(SUPM) COUNT(SUPF)) 3 
ORDER BY (COUNT(BESTM) COUNT(BESTF) COUNT(SUPM) COUNT(SUPF))DESC` 

* 문제입니다 만 데이터베이스가 내가 이메일을 통해 데이터베이스를 보낼 수 있습니다 필요한 경우뿐만 아니라 * 승리 라인을 보여줍니다. 1 문제

답변

0

:

당신이 MySQL을 사용하는 경우에 액세스가 발생,

CREATE TABLE `MOVSTARDIR` (
`MVNUM` SMALLINT NOT NULL , 
`STARNUM` SMALLINT NOT NULL , 
`DIRNUM` SMALLINT NOT NULL , 
`BESTF` TEXT NOT NULL , 
`BESTM` TEXT NOT NULL , 
`SUPM` TEXT NOT NULL , 
`SUPF` TEXT NOT NULL 
); 
+0

mysql이 아닌 이러한 문제를 해결하기 위해 Acess를 사용하고 있습니다. – Uzi

+0

정보 기술 정보 접근 권한에는 Short와 같은 데이터 형식이 없습니다. 데이터 유형에 대한 링크 http://msdn.microsoft.com/en-us/library/ms714540%28v=vs.85%29.aspx –

+0

난 그냥이 코드를 실행 (NULL이 아닌 MVNUM SHORT NOT NULL, STNNUM SHORT NOT NULL, DIRNUM SHORT NOT NULL, BESTF TEXT, BESTM TEXT, SUPM TEXT, SUPF TEXT) CREATE TABLE 나머지 코드없이 테이블을 만들었습니다. 덧붙였다. 하지만 Alter 코드를 입력하면 오류가 발생합니다. 뭔가 변경 코드를 잘못 생각합니다. ALTER TABLE MOVSTARDIR 기본 키 추가 (MVNUM, STARNUM, DIRNUM) – Uzi

0

당신은 각 문 뒤에 세미콜론을 놓치고 다음과 같이해야한다 생성에 대한 질의 전체 텍스트를 하나의 문장으로 취급하십시오.

0
  1. 태그에는 MySQL, SQL Server 및 SQL이 표시됩니다. SQL 구문은 RDBMS에 따라 다를 수 있습니다.

  2. MySQL을 사용 중이라고 가정 할 때 쿼리와 관련된 문제입니다.

    a. 데이터 유형 - MySQL에는 SHORT가 없습니다. SMALLINT

    b를 사용할 수 있습니다. 각 SQL 문을, 당신은 해당 SQL 설명서를 참조하고 정확한 데이터 유형을 지정할 수 있는지 확인해야합니다 비록 당신이 다른 RDBMS를 사용하는 경우

후 세미 콜론을 추가해야합니다.

0

액세스는 쿼리 배치를 하나씩 실행하는 것을 허용하지 않습니다. 그래서 먼저 CREATE TABLE을 실행 한 다음 ALTER를 실행하십시오.

관련 문제