Seguramente recuerdas que en el Colegio o en la Facultad estudiaste una rama de la Matemática que se llama “Teoría de Conjuntos”.  Es esa de los diagramas de Venn donde se usan círculos para representar a los conjuntos.

Venn1

(Si haces clic en la imagen la verás más grande)

Las operaciones que más usualmente se realizan con los conjuntos son:

  • Unión
  • Intersección
  • Diferencia

Y en este artículo veremos como realizar esas operaciones con Firebird.

UNIÓN

SELECT A.MiColumna FROM A

UNION

SELECT B.MiColumna FROM B

INTERSECCIÓN

SELECT A.MiColumna FROM A INNER JOIN B ON A.MiClave = B.MiClave

SELECT A.MiColumna FROM A WHERE EXISTS (SELECT B.MiColumna FROM B WHERE A.MiColumna = B.MiColumna)

DIFERENCIA

SELECT A.MiColumna FROM A WHERE NOT EXISTS (SELECT B.MiColumna FROM B WHERE A.MiColumna = B.MiColumna)

SELECT A.MiColumna FROM A LEFT JOIN B ON A.MiClave = B.MiClave WHERE B.MiClave IS NULL

SELECT A.MiColumna FROM A RIGHT JOIN B ON A.MiClave = B.MiClave WHERE A.MiClave IS NULL

Fíjate que en el caso de la intersección tenemos dos formas de lograrla, elegir una de ellas dependerá de las circunstancias aunque lo normal es utilizar la primera forma.

Y en el caso de la diferencia tenemos tres formas de lograrla. La segunda usaríamos cuando queremos los datos de la tabla A pero no los datos de la tabla B. Y la tercera cuando queremos los datos de la tabla B pero no los de la tabla A.

Artículo relacionado:

El índice del blog Firebird21

Anuncios