Подсчитайте выбор с условиями в нем - PullRequest
0 голосов
/ 18 мая 2018

Сегодня мне нужно написать запрос для базы данных рейсов для школы.Но сейчас я застрял, потому что я не знаю, как продолжать это.Мне нужно выбрать авиакомпании, которые выполнили 1000 или более рейсов.Из-за того, как мы структурировали базу данных, мне пришлось бы сделать это следующим образом:

SELECT DISTINCT a.nombre, 
                a.codigo, 
                count 
                      ( 
                      select distinct o.salida_prevista, 
                                      o.fecha, 
                                      o.identificador 
                      FROM            operacion o 
                      WHERE           EXISTS 
                                      ( 
                                        SELECT DISTINCT v.identificador, 
                                                        v.codigo_aerolinea 
                                        FROM            vuelo v 
                                        WHERE           v.identificador = o.identificador
                                        AND             v.codigo_aerolinea = a.codigo)) AS numflights
FROM            aerolinea a 
WHERE           numflights > 1000;

Но я не могу заставить СЧЕТ работать, он просто выдаст мне синтаксическую ошибку.Как я могу заставить эту РАБОТУ работать?Заранее спасибо!:) РЕДАКТИРОВАТЬ: создание таблиц

CREATE TABLE Aerolinea (
codigo_aerolinea                VARCHAR(10) CONSTRAINT PK_Aerolinea         PRIMARY KEY,
nombre                          VARCHAR(75) CONSTRAINT NN_nombre_aerolinea  NOT NULL);

CREATE TABLE Vuelo (
identificador                   NUMBER      CONSTRAINT PK_Vuelo             PRIMARY KEY,
IATA_origen                     VARCHAR(6),
IATA_destino                    VARCHAR(6),
codigo_aerolinea                VARCHAR(10),
codigo                          VARCHAR(6)  CONSTRAINT NN_codigo_vuelo      NOT NULL,
CONSTRAINT FK_IATA_origen                   FOREIGN KEY (IATA_origen)       REFERENCES Aeropuerto(IATA)
                                                                            ON DELETE CASCADE, 
CONSTRAINT FK_IATA_destino                  FOREIGN KEY (IATA_destino)      REFERENCES Aeropuerto(IATA)
                                                                            ON DELETE CASCADE,
CONSTRAINT FK_codigo_aerolinea              FOREIGN KEY (codigo_aerolinea)  REFERENCES Aerolinea(codigo)
                                                                            ON DELETE CASCADE);
CREATE TABLE Operacion(
identificador                   NUMBER,
fecha                           DATE        CONSTRAINT NN_fecha             NOT NULL,
salida_prevista                 NUMBER,
salida_real                     NUMBER,
llegada_prevista                NUMBER      CONSTRAINT NN_llegada_prevista  NOT NULL,
llegada_real                    NUMBER,
numero_cola                     VARCHAR(6),
CONSTRAINT PK_Operacion         PRIMARY KEY (salida_prevista, fecha, identificador),
CONSTRAINT FK_op_vuelo          FOREIGN KEY (identificador)                  REFERENCES Vuelo(identificador)
                                                                            ON DELETE CASCADE,
CONSTRAINT FK_op_numero_cola    FOREIGN KEY(numero_cola)                    REFERENCES Nave(numero_cola)
                                                                            ON DELETE CASCADE);

1 Ответ

0 голосов
/ 18 мая 2018

Не уверен, что такое операции.

Но, похоже, просто нужно объединиться

 SELECT a.nombre, 
        a.codigo
 FROM aerolinea a
 JOIN vuelo v
   ON a.codigo = v.codigo_aerolinea
 JOIN operations o
   ON o.identificador = v.identificador
 GROUP BY a.nombre, a.codigo
 HAVING COUNT(*) > 1000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...