Guest User

Untitled

a guest
Dec 8th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. SELECT DISTINCT OP.nome , OP.localizacao , AD.nome_cientifico
  2. FROM C AD , A OP, B CP
  3. WHERE OP.id_aquario = CP.id_aquario AND
  4. CP.id_especie = AD.id_especie AND
  5. NOT EXISTS(SELECT *
  6. FROM C AD2
  7. WHERE AD2.id_aquario = CP.id_aquario)
  8. GROUP BY OP.nome;
  9.  
  10. -- A (name,Num2, local)
  11. insert into A values ('Favela',1,'WE');
  12. insert into A values ('Lamosa',2,'NA');
  13. insert into A values ('Luz',3,'S0');
  14.  
  15. -- B (Num1,name,Num2, Num3)
  16. insert into B values (1,'Maria',1,1);
  17. insert into B values (2,'Jorge',2,1);
  18. insert into B values (3,'Teresa',2,1);
  19. insert into B values (4,'Rui',3,1);
  20. insert into B values (1,'Fran',3,3);
  21. insert into B values (2,'Juliett',3,3);
  22.  
  23. -- C (num5,num3,name2,num4)
  24. insert into C values (2,1,'Cao',9);
  25. insert into C values (1,2,'Gato',8);
  26. insert into C values (1,3,'Golfinho',7);
  27. insert into C values (3,4,'Peixe',11);
  28.  
  29. SELECT base.nome as aquario,
  30. base.localizacao,
  31. base.nome_cientifico
  32. FROM (SELECT a.id_aquario,
  33. a.nome,
  34. a.localizacao,
  35. e.id_especie,
  36. e.nome_cientifico,
  37. count(1) as quantidade
  38. FROM aquario a
  39. INNER JOIN especime ep ON ep.id_aquario = a.id_aquario
  40. INNER JOIN especie e ON e.id_especie = ep.id_especie
  41. GROUP BY a.id_aquario, e.id_especie) base
  42. WHERE NOT EXISTS(SELECT 1
  43. FROM especime ep
  44. INNER JOIN especie e ON e.id_especie = ep.id_especie
  45. WHERE ep.id_aquario = base.id_aquario
  46. AND e.id_especie <> base.id_especie
  47. GROUP BY e.id_especie
  48. HAVING count(1) > base.quantidade)
  49.  
  50. CREATE VIEW view_quantidade_aquario AS
  51. SELECT a.id_aquario,
  52. a.nome,
  53. a.localizacao,
  54. e.id_especie,
  55. e.nome_cientifico,
  56. count(1) as quantidade
  57. FROM aquario a
  58. INNER JOIN especime ep ON ep.id_aquario = a.id_aquario
  59. INNER JOIN especie e ON e.id_especie = ep.id_especie
  60. GROUP BY a.id_aquario, e.id_especie
  61.  
  62. SELECT vw.nome as aquario,
  63. vw.localizacao,
  64. vw.nome_cientifico
  65. FROM view_quantidade_aquario vw
  66. WHERE NOT EXISTS(SELECT 1
  67. FROM view_quantidade_aquario vw2
  68. WHERE vw2.id_aquario = vw.id_aquario
  69. AND vw2.id_especie <> vw.id_especie
  70. AND vw2.quantidade > vw.quantidade)
  71.  
  72. ______________________________________________________
  73. | aquario | localizacao | nome_cientifico |
  74. | _____________________________________________________|
  75. | Vasco da Gama | NO | Lutra sumatrana |
  76. | Bartolomeu Dias | N | Lutra sumatrana |
  77. | Infante D. Henrique | S | Torpedo torpedo |
  78. |______________________________________________________|
Add Comment
Please, Sign In to add comment