2016-08-12 162 views
-1

我正嘗試使用SQL Developer創建視圖並遇到奇怪的錯誤。似乎有一個右括號缺失,但我找不到哪裏 - 你能幫我嗎?SQL缺少右括號

輸入:

CREATE OR REPLACE VIEW MAST_SOMME_POINTS_CLUBS AS 
    (SELECT C.NOM, SUM(R.POINTS) AS POINTS 
    FROM MAST_CLUBS C 
    JOIN MAST_NAGEURS N USING(CLUB) 
    JOIN MAST_RESULTATS R USING(NRLIGUE) 
    GROUP BY (C.CLUB, C.NOM) 
    ORDER BY C.NOM); 

OUTPUT:

Erreur commençant à la ligne: 1 de la commande - 
CREATE OR REPLACE VIEW MAST_SOMME_POINTS_CLUBS AS 
    (SELECT C.NOM, SUM(R.POINTS) AS POINTS 
    FROM MAST_CLUBS C 
    JOIN MAST_NAGEURS N USING(CLUB) 
    JOIN MAST_RESULTATS R USING(NRLIGUE) 
    GROUP BY (C.CLUB, C.NOM) 
    ORDER BY C.NOM) 
Rapport d'erreur - 
Erreur SQL : ORA-00907: missing right parenthesis 
00907. 00000 - "missing right parenthesis" 
*Cause:  
*Action: 

回答

0

只要避免使用不必要的括號:

CREATE OR REPLACE VIEW MAST_SOMME_POINTS_CLUBS AS 
    SELECT 
     C.NOM, 
     SUM(R.POINTS) AS POINTS 
    FROM 
     MAST_CLUBS C 
    JOIN 
     MAST_NAGEURS N 
     USING (CLUB) 
    JOIN 
     MAST_RESULTATS R 
     USING (NRLIGUE) 
    GROUP BY 
     C.CLUB, -- Is this intentional? It is not in your SELECT 
     C.NOM 
    ORDER BY NOM; 

有一個小竅門:讓你的代碼乾淨的佈局,結構良好的幫助避免很多問題。

+0

該死的你是對的!我的意思是,說到你在評論中寫的內容,我首先想到我應該在那裏,因爲它是主鍵,但它不應該:P我刪除它,它解決了我的問題,非常感謝! –

+0

@AxelSamyn - 這是乾淨地構建代碼的好處。 :-) – Nicarus

+0

@AxelSamyn - 你確定C.CLUB不應該在那裏嗎?沒有它,你會得到所有俱樂部成員的總分(如果他或她屬於多個) - 這對你的業務是否有意義?否則,您應該擁有C.CLUB,無論是在GROUP BY中還是在SELECT中都是**,那麼您將通過成員和俱樂部組合獲得積分總數(兩個不同俱樂部成員的兩排)。 – mathguy