viernes, 6 de enero de 2017

subconsultas con SQL en LibreOffice Base (XXVIII)

LibreOffice Base
Observe la siguiente instrucción:

SELECT * FROM "Especialistas" WHERE "ID"
   NOT IN
   (SELECT "Especialista" FROM "Clientes");

Una instrucción SELECT dentro de otra instrucción SELECT, esto es una subconsulta.


¿Como se interpreta esta instrucción?, no se preocupe, es simple de comprender, por cada registro que lee de la tabla Especialista por el campo ID, intenta localizar al menos uno en la tabla Clientes por el campo Especialista, si no lo localiza lo muestra.

Pongamos en práctica lo que hemos aprendido en LibreOffice Base, una vez abierta la base de datos donde va a trabajar, seleccione la sección de Consultas, haga clic en la opción Crear una consulta en modo SQL...

SQL y LibreOffice Base

Le mostrará el siguiente cuadro de diálogo, en este puede introducir la instrucción que acabamos de estudiar.

SQL y LibreOffice Base

Introduzca la instrucción SQL, observe que ha cambiado algunos colores de la misma, esto lo hace mas fácil de leer e identificar para el usuario, ya que destina un color para cada tipo de argumento de la instrucción en SQL.

SQL y LibreOffice Base

Haga clic en el botón Ejecutar consulta para que le muestre el resultado.

SQL y LibreOffice Base

Modificaremos la instrucción a la siguiente:

SELECT * FROM "Especialistas" WHERE "ID"
   IN
   (SELECT "Especialista" FROM "Clientes");

¿Como se interpreta esta instrucción?, de nuevo es simple de comprender, por cada registro que lee de la tabla Especialista por el campo ID, intenta localizar al menos uno en la tabla Clientes por el campo Especialista, si lo localiza lo muestra.

SQL y LibreOffice Base

La instrucción anterior da el mismo resultado que la siguiente, solo cambia la palabra reservada IN por EXISTS:

SELECT * FROM "Especialistas" WHERE
   EXISTS
   (SELECT "Especialista" FROM "Clientes");

SQL y LibreOffice Base

Puede mostrar el resultado ordenado, observe la siguiente instrucción:

SELECT * FROM "Especialistas" WHERE "ID"
IN
( SELECT "Especialista" FROM "Clientes" )
ORDER BY  "Dirección"

SQL y LibreOffice Base

Mucho cuidado con los nombre de tablas y campos en la subconsulta, si no existe el campo en la definición de la tabla, puede no lanzar un error y al ejecutarla no mostrará ningún registro, pareciendo que la query se ha ejecutado correctamente, revisar con cuidado todos los nombre de campos.

0 comentarios:

Publicar un comentario