Consulta SQL

12 views
Skip to first unread message

ALFREDO FEDERICO DUARTE

unread,
May 31, 2016, 3:11:57 PM5/31/16
to gdatos
Hola, se pueden usar las clausulas intersect y except para la resolucion de los los ejercicios? debido a que en los apuntes no figuran y tampoco he visto que alguien lo haya usado. 
Les envío un ejercicio donde usamos intersect y except.
 Gracias

Ejercicio 3 – Infracciones

-- C -- El nombre de las personas que adeuden infracciones anteriores al ano 1992 y que después de esa fecha, bien no hayan cometido otras infracciones, o si las cometieron, 
-- las han pagado a todas.

select
i.dni, p.nombre from infraccion i, persona p  where i.dni=p.dni and fecha<'1992-01-01' and pagada='f'
intersect
((select i.dni, p.nombre from infraccion i, persona p where i.dni=p.dni and fecha>='1992-01-01') except (select i.dni, p.nombre from infraccion i, persona p where i.dni=p.dni and fecha>='1992-01-01' and pagada='f')
union
(select i.dni, p.nombre from infraccion i, persona p) except (select i.dni, p.nombre from infraccion i, persona p where i.dni=p.dni and fecha>='1992-01-01'))


Paula Zabalegui

unread,
May 31, 2016, 3:42:58 PM5/31/16
to gda...@googlegroups.com
Hola Alfredo,

Intersect y except son las operaciones correspondientes para la intersección y diferencia. Nosotros en su defecto utilizamos JOIN en conjunto con (NOT) IN, (NOT) EXISTS.

A diferencia de álgebra relacional, vimos que SQL no cumple necesariamente con todas las propiedades de la teoría de conjuntos. Estas operaciones, en consultas "pesadas", y siempre dependiendo del "vendor" (sql server, postgres, oracle, etc.), pueden tener menos eficiencia que las operaciones básicas de JOIN. 

Por este motivo es que no las vemos ni desde la teoría, ni desde la práctica y recomendamos utilizarlas luego de conocer bien el manejo de los planes de ejecución y optimización de consultas que veremos en unidades posteriores.

Espero haber podido responder tu consulta

Saludos

--
Has recibido este mensaje porque estás suscrito al grupo "gdatos" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a gdatos+un...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages