problema de busca
Boa noite, gostaria da ajuda de vocês para conseguir fazer esse trabalho que tenho.
Não estou conseguindo fazer uma consulta ao qual deve listar todos os usuários que voaram em todos os voos pilotados por um especifico piloto.
Só que eu não estou conseguindo, pois quando eu tento utilizar as funções que estamos aprendendo, não consigo retornar apenas o registro que realmente deve retornar.
Segue o SQL:
CREATE TABLE voo (num_voo char(10) NOT NULL, hora_part char(4) NOT NULL, hora_cheg char(4) NOT NULL, cidade_part char(20) NOT NULL, cidade_cheg char(20) NOT NULL, PRIMARY KEY (num_voo));
CREATE TABLE piloto (cod_piloto char(10) NOT NULL, nome char(30) NOT NULL, endereco char(50) NOT NULL, data_admissao date NOT NULL, PRIMARY KEY (cod_piloto));
CREATE TABLE execucao_voo (num_voo char(10) NOT NULL, DATA date NOT NULL, cod_piloto char(15) NOT NULL, n_lugares integer NOT NULL, PRIMARY KEY (num_voo,DATA), FOREIGN KEY (num_voo) REFERENCES voo);
CREATE TABLE cliente_p (cod_cli char(10) NOT NULL, nome char(30) NOT NULL, endereco char(50) NOT NULL, telefone char(20), PRIMARY KEY (cod_cli));
CREATE TABLE passagem (num_voo char(10) NOT NULL, DATA date NOT NULL, poltrona char(3) NOT NULL, cod_cli char(10), data_reserva date, PRIMARY KEY (num_voo, DATA, poltrona), FOREIGN KEY (num_voo, DATA) REFERENCES execucao_voo, FOREIGN KEY (cod_cli) REFERENCES cliente_p);
INSERT INTO voo VALUES ('v1', '800', '845', 'Sao Paulo', 'Rio de Janeiro');
INSERT INTO voo VALUES ('v2', '1000', '1330', 'Sao Paulo', 'Salvador');
INSERT INTO voo VALUES ('v3', '2200', '2330', 'Porto Alegre', 'Sao Paulo');
INSERT INTO voo VALUES ('v5', '1200', '1345', 'Porto Alegre', 'Rio de Janeiro');
INSERT INTO voo VALUES ('v4', '1100', '1150', 'Porto Alegre', 'Florianopolis');
/* insercao de dados na tabela piloto */
INSERT INTO piloto VALUES ('p1', 'Pedro', 'Rua Carlos Gomes, 607', str_to_date('03/03/1989','%d/%m/yyyy'));
INSERT INTO piloto VALUES ('p4', 'Ronaldo', 'Rua 24 de outubro, 312/201', str_to_date('20/04/1980','%d/%m/yyyy'));
INSERT INTO piloto VALUES ('p2', 'Paulo', 'Rua Nilo Peçanha, 804/203', str_to_date('13/11/1990','%d/%m/yyyy'));
INSERT INTO piloto VALUES ('p3', 'Marcos', 'Rua Mariland, 645/302', str_to_date('12/07/1988','%d/%m/yyyy'));
/* insercao de dados na tabela execucao_voo */
INSERT INTO execucao_voo VALUES ('v1', str_to_date('18/06/2002','%d/%m/yyyy'), 'p2', 70);
INSERT INTO execucao_voo VALUES ('v1', str_to_date('20/09/2002','%d/%m/yyyy'), 'p2', 200);
INSERT INTO execucao_voo VALUES ('v3', str_to_date('10/08/2002','%d/%m/yyyy'), 'p2', 140);
INSERT INTO execucao_voo VALUES ('v4', str_to_date('20/09/2002','%d/%m/yyyy'), 'p4', 100);
INSERT INTO execucao_voo VALUES ('v3', str_to_date('11/11/2002','%d/%m/yyyy'), 'p2', 300);
INSERT INTO execucao_voo VALUES ('v1', str_to_date('22/09/2002','%d/%m/yyyy'), 'p1', 110);
INSERT INTO execucao_voo VALUES ('v5', str_to_date('20/09/2002','%d/%m/yyyy'), 'p3', 145);
INSERT INTO execucao_voo VALUES ('v2', str_to_date('01/09/2002','%d/%m/yyyy'), 'p4', 350);
INSERT INTO execucao_voo VALUES ('v1', str_to_date('23/09/2002','%d/%m/yyyy'), 'p4', 290);
INSERT INTO execucao_voo VALUES ('v1', str_to_date('11/11/2002','%d/%m/yyyy'), 'p4', 125);
INSERT INTO execucao_voo VALUES ('v5', str_to_date('10/11/2002','%d/%m/yyyy'), 'p4', 185);
/* insercao de dados na tabela cliente */
INSERT INTO cliente_p VALUES ('c1', 'Joao', 'Rua Freire Alemao, 83/501', '(051) 330-9009');
INSERT INTO cliente_p VALUES ('c2', 'Luis', 'Rua Anita Garibaldi, 1001/703', '(051) 330-1009');
INSERT INTO cliente_p VALUES ('c3', 'Carlos', 'Av. Carazinho', 120);
INSERT INTO cliente_p VALUES ('c4', 'Maria', 'Av. Protasio Alves, 3244/303', '(051) 333-7445');
/* insercao de dados na tabela passagem */
INSERT INTO passagem VALUES ('v5', str_to_date('20/09/2002','%d/%m/yyyy'), '16a', 'c3', str_to_date('12/03/2002','%d/%m/yyyy'));
INSERT INTO passagem VALUES ('v1', str_to_date('20/09/2002','%d/%m/yyyy'), '16b', 'c4', str_to_date('15/05/2002','%d/%m/yyyy'));
INSERT INTO passagem VALUES ('v1', str_to_date('18/06/2002','%d/%m/yyyy'), '24b', 'c3', str_to_date('12/03/2002','%d/%m/yyyy'));
INSERT INTO passagem VALUES ('v3', str_to_date('10/08/2002','%d/%m/yyyy'), '13a', 'c4', str_to_date('10/05/2002','%d/%m/yyyy'));
INSERT INTO passagem VALUES ('v4', str_to_date('20/09/2002','%d/%m/yyyy'), '19c', 'c3', str_to_date('13/06/2002','%d/%m/yyyy'));
INSERT INTO passagem VALUES ('v3', str_to_date('10/08/2002','%d/%m/yyyy'), '1a', 'c1', str_to_date('20/03/2002','%d/%m/yyyy'));
INSERT INTO passagem VALUES ('v3', str_to_date('11/11/2002','%d/%m/yyyy'), '2a', 'c2', str_to_date('12/09/2002','%d/%m/yyyy'));
INSERT INTO passagem VALUES ('v5', str_to_date('20/09/2002','%d/%m/yyyy'), '21a', 'c1', str_to_date('05/04/2002','%d/%m/yyyy'));
INSERT INTO passagem VALUES ('v5', str_to_date('10/11/2002','%d/%m/yyyy'), '11a', 'c3', str_to_date('15/04/2002','%d/%m/yyyy'));
INSERT INTO passagem VALUES ('v4', str_to_date('20/09/2002','%d/%m/yyyy'), '19a', 'c2', str_to_date('02/06/2002','%d/%m/yyyy'));
INSERT INTO passagem VALUES ('v1', str_to_date('11/11/2002','%d/%m/yyyy'), '5a', 'c3', str_to_date('23/06/2002','%d/%m/yyyy'));
A questão que tenho que fazer é essa:
Recuperar o código e nome de clientes que marcaram passagem em pelo menos todos os vôos comandados pelo piloto Ronaldo, que saíram de Porto Alegre.
O retorno é:
COD_CLI NOME
---------- ------------------------------
c3 Carlos
Eu não tenho ideia de como fazer isso, eu tentei iniciar, mas sempre me retorna todos os clientes, pois eles já viajaram com o piloto Ronaldo. Não consegui desenvolver a lógica para retornar apenas os que viajaram em todos os voos de Ronaldo.
Obrigado pela ajuda.
Discussão (6)
Carregando comentários...