問題1:使用SQL CREATE TABLE語句,創建一個表MOVSTARDIR,其中包含電影號碼,星號和導演編號以及4個代理獎項的屬性。主鍵是電影號碼,明星號碼和導演號碼(全部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`
* 它給了我一個錯誤說東西是錯誤的「CREATE TABLE」語句,並突出在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`
* 問題的,這是它列出所有記錄,不只是贏得 * 如果需要數據庫,我可以通過電子郵件發送數據庫。
我正在使用Acess來做這些問題,而不是mysql – Uzi
據我所知訪問沒有任何數據類型,如短嘗試使用數字代替。鏈接到數據類型http://msdn.microsoft.com/en-us/library/ms714540%28v=vs.85%29。aspx –
當我只是運行這個代碼CREATE TABLE MOVSTARDIR (MVNUM SHORT NOT NULL,STARNUM SHORT NOT NULL,DIRNUM SHORT NOT NULL,BESTF TEXT,BESTM TEXT,SUPM TEXT,SUPF TEXT)創建表時沒有其餘的代碼添加。但是當我把修改代碼,然後它給了我錯誤。我認爲alter code有些問題。 ALTER TABLE MOVSTARDIR ADD PRIMARY KEY(MVNUM,STARNUM,DIRNUM) – Uzi