El comando SQL se puede utilizar para informar desde cualquier origen de datos o conjunto de orígenes de datos admitido. Se puede añadir frases TABLE de formato de informes a declaraciones SQL para aprovechar la variedad de opciones de preparación de informes.
Nota: Si necesita unir orígenes de datos para su solicitud, tiene dos opciones: usar el comando JOIN antes de enviar cualquier comando SQL, o usar el comando WHERE en el comando SQL SELECT para unir los campos necesarios de forma dinámica. Consulte Joins SQL.
SQL
sql statement;
[ECHO|FILE]
[TABLE phrases]
END
donde:
Es el identificador de comandos SQL que invoca al SQL Translator.
Nota: Los componentes de comando SQL deben aparecer en el orden que se muestra más arriba.
Es una declaración SQL admitida. La declaración debe terminar por un punto y coma (;). Puede ocupar más de una línea. Vaya a Declaraciones de SQL admitidas.
Dentro de la declaración SQL, los nombres de campos tienen un límite de 48 caracteres (limitación ANSI estándar de nivel 2). Los nombre de vistas generados por medio de la declaración SQL CREATE VIEW tienen un límite de 18 caracteres y las subconsultas pueden anidarse en hasta 15 niveles de profundidad. Tenga en cuenta que no se admiten subconsultas correlacionadas en FOCUS ni en otros orígenes de datos no relacionales.
Son frases de depuración opcionales que capturan la solicitud TABLE generada. Estas opciones se colocan después de la declaración SQL.
Escribe las frases TABLE traducidas en el procedimiento identificado. Si no proporciona un nombre de archivo, se asigna un nombre predeterminado cuando se ejecuta la solicitud. A continuación, se borra el archivo.
Son frases opcionales de formato de TABLE. Consulte Frases de formato de TABLE en solicitudes SQL.
Se requieren para finalizar el procedimiento.
La siguiente solicitud contiene una declaración SQL y comandos de formateo TABLE:
SQL SELECT BODYTYPE, AVG(MPG), SUM(SALES) FROM CAR WHERE RETAIL_COST > 5000 GROUP BY BODYTYPE; TABLE HEADING CENTER "AVERAGE MPG AND TOTAL SALES PER BODYTYPE" END
Puede incluir frases de formato de TABLE en una solicitud SQL, sujeto a las siguientes reglas:
Para más detalles sobre encabezados y pies, consulte Cómo usar encabezados, pies, títulos y etiquetas.
Para más detalles sobre ON TABLE HOLD y ON TABLE PCHOLD, consulte Cómo guardar y reutilizar su salida de informes.
La declaración SQL SELECT se traduce en uno o varios comandos TABLE PRINT o TABLE SUM, en función de si es aplicable la visualización de campos individuales o agregación, en la solicitud. Vaya a Cómo mostrar datos de informes.
La declaración SELECT * de SQL se traduce a un PRINT de cada campo en el archivo máster y utiliza todos los campos del producto cartesiano. Esta es una forma rápida de mostrar un archivo, siempre y cuando quepa en un número razonable de pantallas para mostrarlo o que utilice ON TABLE HOLD o ON TABLE PCHOLD para mantener datos recuperados en un archivo para reutilizarlos. Consulte Cómo guardar y reutilizar su salida de informes.
Se admiten funciones SQL (como COUNT, SUM, MAX, MIN, AVG) en listas SELECT y en condiciones HAVING. Las expresiones se pueden utilizar como argumentos de función.
La función COUNT (*) traduce a una suma del número de registros generados al imprimir todos los campos del archivo máster. Es lo mismo que contar todas las filas en el producto cartesiano que produce una SELECT en todos los campos.
Siempre que sea posible, las expresiones en el predicado WHERE de SQL se traducen a los criterios WHERE correspondientes en la solicitud TABLE. Las expresiones en las listas SELECT generan campos virtuales. Las cláusulas SQL HAVING también se traducen en los criterios WHERE TOTAL correspondientes en la solicitud TABLE. El operador SQL LIKE se traduce directamente al operador LIKE correspondiente, en los criterios WHERE de la solicitud TABLE. Para más detalles sobre la selección de registros en las solicitudes TABLE, consulte Cómo seleccionar registros para su informe.
Sólo se admiten las subconsultas basadas en una igualdad, donde la expresión WHERE se compara con una subconsulta mediante un signo de igual (=). Por ejemplo: Campo WHERE = (SELECT ...).
El operador SQL UNION se traduce en una solicitud TABLE que crea un archivo HOLD para cada origen de datos especificado, seguido de un comando MATCH con la opción HOLD OLD-OR-NEW, que combina registros del primer (antiguo) origen de datos y del segundo (nuevo) origen de datos. Consulte Cómo fusionar orígenes de datos.
Para más información, consulte Declaraciones de SQL admitidas y Cómo Utilizar comandos SQL Translator.
Cómo: Referencia: |
Al realizar joins SQL, los campos unidos deben tener el mismo formato. Los campos join no necesitan estar indexados y no se admiten los que no sean equijoins.
Se admiten joins recursivas, externas e internas. Las joins internas son las predeterminadas.
Las joins internas admiten dos variaciones de sintaxis.
Variación 1
SQL SELECT fieldlist FROM file1 [alias1], file2 [alias2] [WHERE where_condition]; END
Variación 2
SQL SELECT fieldlist FROM file1 [alias1] INNER JOIN file2 [alias2] ON join_condition [INNER JOIN ...] [WHERE where_condition]; END
donde:
Identifica los campos y los orígenes de datos de los que se van a recuperar estos.
Si los nombres no son únicos, los campos combinados en el predicado SQL WHERE deben estar cualificados. Especifíquelos con sus correspondientes nombres o alias de archivos. Por ejemplo:
{file1|alias1}.field1, {file2|alias2}.field2
Introduce los orígenes de datos que hay que combinar.
Son los orígenes de datos que hay que combinar.
Son nombres alternativos opcionales para los orígenes de datos que hay que combinar.
Es una condición de selección opcional para el conjunto de respuestas unidas. Las filas unidas que no satisfagan esta condición se eliminan del conjunto de respuestas devueltas. Si se omite en la Variación 1, el conjunto de respuestas es el producto cartesiano de los dos orígenes de datos.
Es la condición de join.
SQL SELECT fieldlist FROM file1 {LEFT|RIGHT|FULL} JOIN file2 ON join_condition [{LEFT|RIGHT|FULL} JOIN ...] WHERE where_condition END
donde:
Identifica qué campos hay que recuperar de qué orígenes de datos.
Si los nombres no son únicos, los campos combinados en el predicado SQL WHERE deben estar cualificados. Especifíquelos con sus correspondientes nombres o alias de archivos. Por ejemplo:
{file1|alias1}.field1, {file2|alias2}.field2
Introduce los orígenes de datos que hay que combinar.
Son los orígenes de datos que hay que combinar.
Son nombres alternativos opcionales para los orígenes de datos que hay que combinar.
Es la condición de join. La condición debe especificar igualdad. Por ejemplo, T1.A=T2.B.
Es una condición de selección opcional para el conjunto de respuestas unidas. Las filas unidas que no satisfagan esta condición se eliminan del conjunto de respuestas devueltas.
A las joins emitidas por SQL Translator se les asignan nombres en el formato:
SQLJNMnn
donde:
Es el prefijo de join de SQL Translator.
Es un número entre 01 y 16 asignado en el orden en que se generan las joins (FOCUS admite un máximo de 16 joins). La primera join tiene el nombre de tipo AS, SQLJNM01; la segunda join se identifica como SQLJNM02 y así sucesivamente hasta SQLJNM16.
SQL Translator crea y elimina automáticamente todas las joins. Ninguna join especificada por el usuario se ve afectada.
En la siguiente declaración, T.A y U.B son nombres de campo cualificados:
SQL SELECT T.A, T.B FROM T, U WHERE T.A = U.B; END
En la siguiente declaración, A y B son distintos alias para el mismo origen de datos, CAR. La salida desde CAR son pares de valores de B que tienen los mismos valores A:
SQL SELECT A.SEATS, B.SEATS FROM CAR A, CAR B WHERE A.MODEL = B.MODEL; END
Tenga en cuenta que todos los nombres de campo en la cláusula SELECT deben ser únicos o cualificados.
En la siguiente declaración, B y C son alias de orígenes de datos diferentes:
SQL SELECT B.FIELD1 AS B_FIELD1, B.FIELD2 AS B_FIELD2, D.FIELD1 AS D_FIELD1, D.FIELD2 AS D_FIELD2 FROM ((FILE1 B FULL OUTER JOIN FILE2 C ON B.FIELD2 = C.FIELD2 ) FULL OUTER JOIN FILE3 D ON C.FIELD2 = D.FIELD2 ) WHERE B.FIELD1 < 2 END
Se admite el uso de múltiples joins externos completos. Sin embargo, dan lugar a un número indeterminado de archivos HOLD temporales.
Para obtener información relacionada sobre la optimización de índices y declaraciones de join, consulte la documentación de su servidor.
Referencia: |
SQL Translator admite los comandos CREATE TABLE e INSERT INTO table:
Estos comandos le permiten crear tablas para mejorar la eficiencia de los informes.
Nota: Cuando las aplicaciones están habilitadas, el archivo máster y el origen de datos se graban en el directorio APPHOLD. Cuando se deshabilitan las aplicaciones, el archivo máster y el origen de datos se escriben en el directorio TEMP.
A continuación se muestra la inserción de un solo registro, generando una tabla U de un solo registro:
-* Single-record insert example. -* SQL CREATE TABLE U (A INT, B CHAR(6), C CHAR(6), X INT, Y INT); END SQL INSERT INTO U (A,B,C,X,Y) VALUES (10, '123456','654321', 10, 15); END
Cómo: |
Una vista es un objeto pasajero que hereda la mayoría de las características de una tabla. Al igual que las tablas, está compuesto de filas y columnas:
Sugerencia: Para utilizar una vista, emita desde ésta un SELECT. No puede emitir una solicitud TABLE contra la vista porque ésta no se extrae como un origen de datos físico de FOCUS. Para crear un archivo HOLD para datos extraídos, especifique ON TABLE HOLD después de las oraciones SQL. Para obtener información detallada acerca de cómo crear archivos HOLD, vaya a Cómo guardar y reutilizar su salida de informes.
SQL Translator admite la siguiente declaración:
CREATE VIEW viewname AS subquery ;
donde:
Es el nombre de la vista.
Es una declaración SELECT anidada dentro de:
El ejemplo que sigue crea una vista llamada XYZ:
SQL CREATE VIEW XYZ AS SELECT CAR, MODEL FROM CAR; END
Para realizar un informe desde la vista, ejecute:
SQL SELECT CAR, MODEL FROM XYZ; END
Según la sintaxis normal de definición de datos de SQL, cada declaración CREATE VIEW debe terminar en punto y coma.
La solicitud siguiente elimina la vista XYZ:
SQL DROP VIEW XYZ; END
A menos que desactive explícitamente esta característica, SQL Translator genera de manera automática conjuntos de repuestas de estilo de producto cartesiano. Se aconseja dejar la configuración CARTESIAN activada, pues apagarla viola los estándares ANSI. Para obtener información detallada acerca del comando SET CARTESIAN, vaya a Cómo fusionar orígenes de datos.
La notación decimal continental muestra números utilizando una coma para señalar la posición decimal y puntos para separar los dígitos significativos en grupos de tres. Esta notación está disponible para solicitudes SQL Translator.
El ejemplo que sigue crea una columna definida como 1.2 + SEATS:
SET CDN=ON SQL SELECT SEATS + 1,2 FROM CAR; END
Especifique campos en una solicitud SQL con:
Se puede incluir el siguiente identificador de campo en una solicitud:
"COUNTRY.NAME"
Para calificar el nombre de campo delimitado COUNTRY.NAME con su nombre de campo, utilice:
CAR."COUNTRY.NAME"
Los operadores UNION, INTERSECT y EXCEPT de SQL generan lógica MATCH. El número de archivos que puede participar está determinado por el límite MATCH. Se admite UNION entre paréntesis.
La lógica Match fusiona los contenidos de sus orígenes de datos. Consulte Cómo fusionar orígenes de datos.
La lista SELECT, el predicado WHERE y la cláusula HAVING de SQL pueden incluir constantes numéricas, literales colocados entre comillas simples, expresiones y Cualquier funciones escalares. En el ámbito interno, se crea un campo virtual para cada una de éstas, en la lista SELECT. El valor del campo virtual viene incluido en el conjunto de respuestas.
WebFOCUS |