2016-06-01 3 views
0
SELECT DISTINCT CONCAT('TOTAL NUMBER OF LEGS IN A TRIP NUMBER ', T1.TNUM, ' IS NOT EQUAL TO THE LARGEST NUMBER OF LEG IN THE TRIP') AS 'ERR' 
FROM TRIPLEG T1 
WHERE MAX(T1.LEGNUM) = (SELECT COUNT(T2.TNUM) 
        FROM TRIPLEG 
        WHERE T1.TNUM = T2.TNUM); 

Avec mon code, j'essaie de trouver tous les déplacements qui violent la contrainte de cohérence suivante. la dernière étape de chaque voyage doit être égal au nombre total de pieds dans un voyage »Erreur 111, utilisation invalide des fonctions de groupe

CREATE TABLE TRIPLEG(
TNUM DECIMAL(10)  NOT NULL, 
LEGNUM DECIMAL(2) NOT NULL, 
DEPARTURE VARCHAR(30) NOT NULL,  DESTINATION VARCHAR(30) NOT NULL, 
    CONSTRAINT TRIPLEG_PKEY PRIMARY KEY (TNUM, LEGNUM), 
    CONSTRAINT TRIPLEG_UNIQUE UNIQUE(TNUM, DEPARTURE, DESTINATION), 
CONSTRAINT TRIPLEG_FKEY1 FOREIGN KEY (TNUM) REFERENCES TRIP(TNUM)); 

INSERT INTO TRIPLEG VALUES(1, 1, 'Sydney', 'Melbourne'); 
INSERT INTO TRIPLEG VALUES(1, 2, 'Melbourne', 'Hobart'); 
+0

Vous utilisez des fonctions d'agrégation dans une clause where:' MAX (T1.LEGNUM) 'vous ne pouvez pas.Je voudrais suggérer un' GroupBy' et un 'Having' ... – Codexer

Répondre

0

Essayez de suivre;)

SELECT DISTINCT CONCAT('TOTAL NUMBER OF LEGS IN A TRIP NUMBER ', T1.TNUM, ' IS NOT EQUAL TO THE LARGEST NUMBER OF LEG IN THE TRIP') AS 'ERR' 
FROM TRIPLEG T1 
GROUP BY T1.TNUM 
HAVING COUNT(T1.TNUM) <> MAX(T1.LEGNUM) 
+1

omg ça marche! TT merci tellement tellement sooo much –