2015-04-01 2 views
-1

МОЙ вопрос заключается в следующем:SQL Проверочное ограничение .. не работает WITH ME

Создать новую таблицу с именем частые путешественники (FreqTrav). Он будет хранить только пассажиров, которые совершили более двух поездок с компанией. Он будет записывать имя пассажира, номер пассажира, адрес, номер телефона, общие поездки и общую стоимость проезда. Покажите запрос CREATE TABLE и запрос INSERT. Вставьте записи с помощью подзапроса (т. Е. Вставьте из запроса SELECT).

Я Worte следующий запрос :

 CREATE TABLE FreqTrav (

    PASSENGERNUM INT(20) 
    CHECK (PASSENGERNUM IN 
(SELECT P.PASSENGERNUM 
    FROM PASSENGER P, VOYAGE V 
    WHERE P.PASSENGERNUM = V.PASSENGERNUM 
    GROUP BY V.PASSENGERNUM 
    HAVING COUNT(*) >2)) 

    passengername CHAR (20) 
    address VARCHAR(50) 
    phonenumber CHAR(20) 
     totaltrips INT (20) 
     CHECK (totaltrips IN 
(SELECT COUNT(PASSENGERNUM) 
FROM VOYAGE 
GROUP BY PASSENGERNUM HAVING COUNT(*) >2)) 
     totalfare INT (20) 
    CHECK (totalfare IN 
(SELECT SUM(FARE) 
FROM VOYAGE 
WHERE PASSENGERNUM IN 
(SELECT COUNT(PASSENGERNUM) 
FROM VOYAGE 
GROUP BY PASSENGERNUM HAVING COUNT(*) >2))) 
     ); 

, но это не работает для меня, так как я попытался вставить passengernum кто did't путешествие более чем в два раза, и он был включен. Кроме того, у меня есть вопрос, касающийся других столбцов, это будет okey, если значение, вставленное в отличие от значений в исходной таблице, или мне нужно выполнить проверку, такую ​​же, как и то, что я сделал для общей поездки и общего тарифа ?

Я приложил мою таблицу базы данных по ссылке ниже ПОС, а также http://i.stack.imgur.com/ojzHt.png благодаря

ответ

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