Consultas UNION

La construcci�n UNION es algo diferente en cuanto que es m�s posible el que haya tipos distintos en un resultado.

Evaluaci�n de UNION

  1. Comprueba si los tipos son id�nticos para todos los resultados.

  2. Convierte cada resultado de la clausula UNION para ajustarlo al tipo de la primera clausula SELECT o de la columna de resultado.

Ejemplos

Tipos sin especificar

tgl=> SELECT text 'a' AS "Text" UNION SELECT 'b';
Text
----
a
b
(2 rows)

UNION simple

tgl=> SELECT 1.2 AS Float8 UNION SELECT 1;
Float8
------
     1
   1.2
(2 rows)

UNION transpuesto

Los tipos del UNION son forzados a ajustarse a los tipos de la primera clausula en el UNION:

tgl=> SELECT 1 AS "All integers"
tgl-> UNION SELECT '2.2'::float4
tgl-> UNION SELECT 3.3;
All integers
------------
           1
           2
           3
(3 rows)

Una estrategia alternativa del analizador podr�a ser escoger el "mejor" tipo del grupo, pero esto es m�s dif�cil debido a la t�cnica recursiva usada en el analizador. De cualquier modo, se usa el "mejor" tipo cuando hacemos una selecci�n dentro de una tabla:

tgl=> CREATE TABLE ff (f float);
CREATE
tgl=> INSERT INTO ff
tgl-> SELECT 1
tgl-> UNION SELECT '2.2'::float4
tgl-> UNION SELECT 3.3;
INSERT 0 3
tgl=> SELECT f AS "Floating point" from ff;
  Floating point
----------------
               1
2.20000004768372
             3.3
(3 rows)