Cláusula FROM
La cláusula FROM en una consulta enumera las referencias de la tabla (tablas, vistas y subconsultas) desde las que se seleccionan los datos. Si se enumeran varias referencias de tabla, se deben combinar las tablas a través de la sintaxis adecuada en la cláusula FROM o en la cláusula WHERE. Si no se especifican criterios de combinación, el sistema procesa la consulta como una combinación cruzada (producto cartesiano).
Sintaxis
FROM table_reference [, ...]
donde table_reference es uno de los siguientes:
with_subquery_table_name [ table_alias ] table_name [ * ] [ table_alias ] ( subquery ) [ table_alias ] table_reference [ NATURAL ] join_type table_reference [ ON join_condition | USING ( join_column [, ...] ) ] table_reference PIVOT ( aggregate(expr) [ [ AS ] aggregate_alias ] FOR column_name IN ( expression [ AS ] in_alias [, ...] ) ) [ table_alias ] table_reference UNPIVOT [ INCLUDE NULLS | EXCLUDE NULLS ] ( value_column_name FOR name_column_name IN ( column_reference [ [ AS ] in_alias ] [, ...] ) ) [ table_alias ] UNPIVOT expression AS value_alias [ AT attribute_alias ]
El table_alias opcional se puede usar para dar nombres temporales a tablas y referencias de tablas complejas y, si se desea, también a sus columnas, como se muestra a continuación:
[ AS ] alias [ ( column_alias [, ...] ) ]
Parámetros
- with_subquery_table_name
-
Una tabla definida por una subconsulta en la Cláusula WITH.
- table_name
-
Nombre de una tabla o vista.
- alias
-
Nombre alternativo temporal para una tabla o vista. Se debe proporcionar un alias para una tabla obtenida de una subconsulta. En otras referencias de tabla, los alias son opcionales La palabra clave AS es siempre opcional. Los alias de la tabla brindan un acceso directo para identificar tablas en otras partes de una consulta, como la cláusula WHERE. Por ejemplo:
select * from sales s, listing l where s.listid=l.listid
- column_alias
-
Nombre alternativo temporal para una columna en una tabla o vista.
- subquery
-
Una expresión de consulta que toma el valor de una tabla. La tabla solo existe mientras dura la consulta y, por lo general, se le asigna un nombre o un alias. No obstante, no es obligatorio tener un alias. También puede definir nombres de columnas para tablas que derivan de subconsultas. Designar un nombre a los alias de las columnas es importante cuando desea combinar los resultados de las subconsultas con otras tablas y cuando desea seleccionar o limitar esas columnas en otros sitios de la consulta.
Una subconsulta puede contener una cláusula ORDER BY, pero es posible que esta cláusula no tenga ningún efecto si no se especifica también una cláusula OFFSET o LIMIT.
- NATURAL
-
Define una combinación que utiliza automáticamente todos los pares de columnas con nombres idénticos en las dos tablas como las columnas de combinación. No se requiere una condición de combinación explícita. Por ejemplo, si las tablas CATEGORY y EVENT tienen columnas denominadas CATID, una combinación natural de estas tablas es una combinación de las columnas CATID.
nota
Si se especifica una combinación NATURAL, pero no existen pares de columnas con nombres idénticos en las tablas que deben combinarse, la consulta se establece en una combinación cruzada.
- join_type
-
Especifique uno de los siguientes tipos de combinación:
-
[INNER] JOIN
-
LEFT [OUTER] JOIN
-
RIGHT [OUTER] JOIN
-
FULL [OUTER] JOIN
-
CROSS JOIN
Las combinaciones cruzadas son combinaciones no calificadas; devuelven el producto cartesiano de dos tablas.
Las combinaciones internas y externas son combinaciones calificadas. Están calificadas implícitamente (en combinaciones naturales), con la sintaxis ON o USING en la cláusula FROM, o con una condición WHERE.
Una combinación interna devuelve filas coincidentes únicamente en función a la condición de combinación o a la lista de columnas de combinación. Una combinación externa devuelve todas las filas que la combinación interna equivalente devolvería, además de filas no coincidentes de la tabla "izquierda", tabla "derecha" o ambas tablas. La tabla izquierda es la primera tabla de la lista, y la tabla derecha es la segunda tabla de la lista. Las filas no coincidentes contienen valores NULL para llenar el vacío de las columnas de salida.
-
- ON join_condition
-
Especificación del tipo de combinación donde las columnas de combinación se establecen como una condición que sigue la palabra clave ON. Por ejemplo:
sales join listing on sales.listid=listing.listid and sales.eventid=listing.eventid
- USING ( join_column [, ...] )
-
Especificación del tipo de combinación donde las columnas de combinación aparecen enumeradas entre paréntesis. Si se especifican varias columnas de combinación, se delimitan por comas. La palabra clave USING debe preceder a la lista. Por ejemplo:
sales join listing using (listid,eventid)
- PIVOT
-
Rota la salida de filas a columnas, con el fin de representar datos tabulares en un formato fácil de leer. La salida se representa horizontalmente en varias columnas. PIVOT es similar a una consulta GROUP BY con una agregación, utilizando una expresión de agregación para especificar un formato de salida. No obstante, a diferencia de GROUP BY, los resultados se devuelven en columnas en lugar de filas.
Para ver ejemplos que muestran cómo realizar consultas con PIVOT y UNPIVOT, consulte Ejemplos de PIVOT y UNPIVOT.
- UNPIVOT
-
Rotación de columnas en filas con UNPIVOT: el operador transforma las columnas de resultados, de una tabla de entrada o resultados de consultas, en filas, para facilitar la lectura de la salida. UNPIVOT combina los datos de sus columnas de entrada en dos columnas de resultados: una columna de nombres y una columna de valores. La columna de nombres contiene nombres de columna de la entrada, como entradas de fila. La columna de valores contiene valores de las columnas de entrada, como los resultados de una agregación. Por ejemplo, el recuento de elementos de varias categorías.
Anulación de la dinamización de objetos con UNPIVOT (SUPER): puede realizar una anulación de la dinamización de objetos, donde la expresión es una expresión SUPER que hace referencia a otro elemento de la cláusula FROM. Para obtener más información, consulte Anulación de la dinamización de los objetos. Tiene también ejemplos que muestran cómo realizar consultas de datos semiestructurados, como datos con formato JSON.
Notas de uso
Las columnas de combinación deben tener tipos de datos comparables.
Una combinación NATURAL o USING retiene solo uno de cada par de columnas de combinación en el conjunto de resultados intermedios.
Una combinación con la sintaxis ON retiene ambas columnas de combinación en su conjunto de resultados intermedios.
Véase también Cláusula WITH.