2016-06-01 4 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); 

с моим кодом, я пытаюсь найти все поездки, которые нарушают следующее ограничение последовательности. последний этап каждой поездки должна быть равна общему числу ног в поездке»Ошибка 111, неправильное использование групповых функций

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

Вы используете агрегатные функции в ИНЕКЕ:' MAX (T1.LEGNUM) 'вы не можете. Я бы предложил« GroupBy »и« Have' ... – Codexer

ответ

0

Try ниже;)

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 это работает! TT спасибо вам, поэтому так много –

Смежные вопросы