今天我必须为学校的飞行数据库写一个查询。但是现在我被卡住了,因为我不知道如何继续它。我需要选择已经完成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;
但是我无法让COUNT工作,它只会给我一个语法错误。如何使COUNT工作? 先感谢您! :) 编辑:创建表
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);
答案 0 :(得分:1)
不确定什么是操作。
但看起来只需要一个连接
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