BANCO DE DADOS I Professor: Clodis Boscarioli RESOLUÇÃO DA LISTA 1 DE SQL - Dado o modelo abaixo, resolva as consultas em SQL: empregado(nome_empregado, rua, cidade) trabalha (nome_empregado, nome_companhia, salario) companhia (nome_companhia, cidade) gerente (nome_empregado, nome_gerente) 1-) Encontre os nomes de todos os empregados que trabalham para a empresa XYZ Ltda. SELECT trabalha.nome_empregado FROM trabalha WHERE trabalha.nome_companhia = ‘XYZ Ltda.’; 2-) Encontre todos os nomes das cidades dos empregados que trabalham para a empresa XYZ Ltda. SELECT cidade FROM empregado INNER JOIN trabalha ON empregado.nome_empregado = trabalha.nome_empregado WHERE trabalha.nome_companhia = ‘XYZ Ltda.’; 3-) Encontre os nomes, endereço e cidade de residência de todos os empregados da XYZ Ltda. que ganham mais de dez mil reais. SELECT empregado.nome_empregado, rua, cidade FROM empregado INNER JOIN trabalha ON empregado.nome_empregado = trabalha.nome_empregado WHERE trabalha.nome_companhia = ‘XYZ Ltda.’ AND trabalha.salario >10000; 4-) Encontre os nomes de todos os empregados, no banco de dados, que moram na mesma cidade da companhia em que trabalham. SELECT empregado.nome_empregado FROM empregado INNER JOIN (companhia INNER JOIN trabalha ON companhia.nome_companhia = trabalha.nome_companhia) ON (empregado.nome_empregado = trabalha.nome_empregado) AND (empregado.cidade = companhia.cidade); 5-) Encontre os nomes de todos os empregados que moram na mesma cidade e na mesma rua de seu gerente. SELECT T1.nome_empregado FROM empregado T1, empregado T2, gerente WHERE T1.nome_empregado = gerente.nome_empregado AND T2.nome_empregado = gerente.nome_gerente AND T1.rua = T2.rua AND T1.cidade = T2.cidade; ou: SELECT T1.nome_empregado FROM empregado AS ef INNER JOIN gerente AS g ON ef.nome_empregado = g.nome_empregado INNER JOIN empregado AS T2 ON eg.nome_empregado = g.nome_gerente WHERE T1.rua = T2.rua AND T1.cidade = T2.cidade; 6-) Encontre os nomes de todos os empregados, no banco de dados, que não trabalham para a empresa XYZ Ltda. SELECT nome_empregado FROM empregado WHERE NOT EXISTS (SELECT trabalha.nome_empregado FROM trabalha WHERE empregado.nome_empregado = trabalha.nome_empregado AND trabalha.nome_companhia = 'XYZ Ltda'); 7-) Encontre os nomes de todos os empregados que ganham mais que os empregados da Byte Corporation. SELECT nome_empregado FROM trabalha WHERE trabalha.nome_companhia <> ‘Byte Corporation’ AND nome_empregado NOT IN ( SELECT DISTINCT trabalha.nome_empregado FROM trabalha, trabalha AS t WHERE t.nome_companhia = ‘Byte Corporation’ AND trabalha.salario ≤ t.salario); ou: SELECT T2.nome_empregado FROM trabalha T1 WHERE T1.nome_companhia <> ‘Byte Corporation’ AND EXISTS (SELECT * FROM trabalha T2 WHERE T2.nome_companhia = ‘Byte Corporation’ AND T1.salario > T2.salario) 8-) Assuma que todas as companhias possam estar localizadas em diversas cidades. Encontre todas as companhias localizadas em todas as cidades onde haja unidades da Small Bank Corporation. SELECT DISTINCT c2.nome_companhia FROM companhia c2 WHERE c2.nome_companhia <> ‘Small Bank Corporation” AND NOT EXISTS ( (SELECT cidade FROM companhia WHERE nome_companhia= ‘Small Bank Corporation’) EXCEPT (SELECT cidade FROM companhia WHERE nome_companhia=c2.nome_companhia ));