Tema 3. Las consultas multitabla (II) |
El operador UNION |
Como ya hemos visto en la página anterior, el operador UNION sirve para obtener a partir de dos tablas con las mismas columnas, una nueva tabla con las filas de la primera y las filas de la segunda. La sintaxis es la siguiente:
|
|
Consulta puede ser un nombre de tabla, un nombre de consulta (en estos dos casos el nombre debe estar precedido de la palabra TABLE), o una sentencia SELECT completa (en este caso no se puede poner TABLE). La sentencia SELECT puede ser cualquier sentencia SELECT con la única restricción de que no puede contener la cláusula ORDER BY. Después de la primera consulta viene la palabra UNION y a continuación la segunda consulta. La segunda consulta sigue las mismas reglas que la primera consulta. Las dos consultas deben tener el mismo número de columnas pero las columnas pueden llamarse de diferente forma y ser de tipos de datos distintos. Las columnas del resultado se llaman como las de la primera consulta. Por defecto la unión no incluye filas repetidas, si alguna fila está en las dos tablas, sólo aparece una vez en el resultado. Si queremos que aparezcan todas las filas incluso las repeticiones de filas, incluimos la palabra ALL (todo en inglés). El empleo de ALL tienen una ventaja, la consulta se ejecutará más rapidamente. Puede que la diferencia no se note con tablas pequeñas, pero si tenemos tablas con muchos registros (filas) la diferencia puede ser notable. Se puede unir más de dos tablas, para ello después de la segunda consulta repetimos la palabra UNION ... y así sucesivamente. También podemos indicar que queremos el resultado ordenado por algún criterio, en este caso se incluye la cláusula ORDER BY que ya vimos en el tema anterior. La cláusula ORDER BY se escribe después de la última consulta, al final de la sentencia; para indicar las columnas de ordenación podemos utilizar su número de orden o el nombre de la columna, en este último caso se deben de utilizar los nombres de columna de la primera consulta ya que son los que se van a utilizar para nombrar las columnas del resultado.
|
Para ilustrar la operación vamos a realizar el ejercicio visto en la página anterior, vamos a obtener los códigos de los productos que tienen existencias iguales a cero o que aparezcan en pedidos del año 90.
|
SELECT idfab,idproducto |
o bien |
TABLE [existencias
cero] |
Se ha incluido la cláusula ALL porque no nos importa que salgan filas repetidas. Se ha incluido ORDER BY para que el resultado salga ordenado por idproducto, observar que hemos utilizado el nombre de la columna de la primera SELECT, también podíamos haber puesto ORDER BY 2 pero no ORDER BY producto (es el nombre de la columna de la segunda tabla).
|
|
Pag. 3.2
|
Síguenos en: Facebook Sobre aulaClic Política de Cookies
© aulaClic. Todos los derechos reservados. Prohibida la reproducción por cualquier medio.