Cómo utilizar la intersección y salvo operaciones en sql

los UNIÓN operación produce una tabla de resultados que contiene todas las filas que aparecen en alguna de las tablas fuente SQL. Si desea sólo las filas que aparecen en todas las tablas de origen, puede utilizar la INTERSECT operación, que es la implementación SQL de la operación de intersección del álgebra relacional. INTERSECT puede ser ilustrado por regresar al mundo de fantasía en el que Bob Turley fue cambiado a los Dodgers a mitad de temporada:

SELECT * FROM NACIONAL-Nombre Apellido CompleteGames --------- -------- ------------- Sal Maglie 11Don Newcombe9SandyKoufax 13Don Drysdale12Bob Turley 8Seleccione * FROM American- FIRST_NAME LAST_NAME COMPLETE_GAMES ---------- --------- -------------- Whitey Ford 12Don Larson 10Bob Turley 8AllieReynolds14

Sólo las filas que aparecen en todas las tablas de origen se muestran en el INTERSECT tabla de resultados de la operación:

SELECT * FROM NATIONALINTERSECTSELECT * FROM AMERICAN-Nombre Apellido CompleteGames --------- -------- ------------- Bob Turley 8

La tabla de resultados le dice que Bob Turley fue el único lanzador de lanzar el mismo número de juegos completos en ambas ligas (una distinción bastante oscura de edad Bullet Bob). Nota: Como fue el caso con UNIÓN, INTERSECT DISTINCT produce el mismo resultado que la INTERSECT operador utiliza solo. En este ejemplo, sólo una de las filas idénticas que ofrece Bob Turley se devuelve.

los TODAS y CORRESPONDIENTE palabras clave funcionan en una INTERSECT operación de la misma manera que lo hacen en un UNIÓN operación. Si utiliza TODAS, duplicados se mantienen en la tabla de resultados. Si utiliza CORRESPONDIENTE, las tablas intersectadas no necesitan ser compatibles con la unión, a pesar de las columnas correspondientes deben tener tipos de juego y longitudes.

Esto es lo que se obtiene con INTERSECT ALL:

SELECT * FROM NATIONALINTERSECT ALLSELECT * FROM AMERICAN-Nombre Apellido CompleteGames --------- -------- ------------- Bob Turley 8Bob Turley 8

Considere otro ejemplo: Un municipio mantiene un registro de los teléfonos celulares realizadas por agentes de policía, bomberos, barrenderos y otros empleados de la ciudad. Una tabla de base de datos llamada TELÉFONOS contiene datos sobre todos los teléfonos en uso activo. Otra mesa nombrado OUT, con una estructura idéntica, contiene datos sobre todos los teléfonos que se han tomado fuera de servicio.

No hay teléfonos deben existir nunca en ambas tablas. Con un INTERSECT operación, usted puede probar para ver si se ha producido una duplicación tales deseado:

SELECT * FROM PHONESINTERSECT correspondiente (PhoneID) SELECT * FROM OUT -

Si esta operación le da una tabla de resultados que contiene las filas en absoluto, usted sabe que tiene un problema. Usted debe investigar cualquier PhoneID las entradas que aparecen en la tabla de resultados. El teléfono correspondiente está activo o fuera de servicio- no puede ser a la vez. Después de detectar el problema, puede realizar una BORRAR operación en una de las dos tablas para restaurar la integridad de base de datos.

los UNIÓN operación actúa sobre dos tablas de origen y devuelve todas las filas que aparecen en cualquiera de las tablas. los INTERSECT operación devuelve todas las filas que aparecen tanto en la primera y la segunda tablas. En contraste, la EXCEPTO (o EXCEPTO DISTINCT) Operación devuelve todas las filas que aparecen en la primera mesa, pero que no También aparecerá en la segunda tabla.

Volviendo al ejemplo de la base de datos del teléfono municipal, dice que un grupo de teléfonos que habían sido declarados fuera de servicio y devueltos al proveedor para las reparaciones ya se han fijado y se coloca de nuevo en servicio. La tabla TELÉFONOS se actualiza para reflejar los teléfonos devueltos, pero los teléfonos devueltos no se elimina de la tabla OUT como deberían haber sido.

Se puede visualizar el PhoneID números de los teléfonos de la tabla OUT, con los reactivados los eliminados, utilizando un EXCEPTO operación:

SELECT * FROM OUTEXCEPT CORRESPONDIENTE (PhoneID) SELECT * FROM TELEFONIA-

Esta consulta devuelve todas las filas en la tabla de quién PhoneID no es también presente en la mesa de PHONES.




» » » » Cómo utilizar la intersección y salvo operaciones en sql