Los SELECTs que encontrarás en esta categoría son más complicados que los SELECTs para principiantes que tienes en:

https://firebird21.wordpress.com/category/principiantes/ejemplos-de-selects-para-principiantes/

Los SELECTs para intermedios usan más de una tabla porque es raro que en la vida real todos los datos que necesites estén en una sola tabla, lo normal es que estén en dos o más tablas.

En SQL para relacionar a dos tablas entre sí se utiliza la cláusula JOIN. Al resultado obtenido a su vez le puedes hacer un JOIN con otra tabla. Y a ese nuevo resultado le puedes hacer otro JOIN. Y así sucesivamente. Por lo tanto una sola consulta (un solo SELECT) puede tener muchos JOIN.

Para que el JOIN pueda efectuarse debe existir una columna (o más de una columna) igual o similar entre ambas tablas. Si tus tablas están bien diseñadas (o sea, si están normalizadas) entonces esas columnas seguro que existen.

También es posible relacionar una tabla con sí misma. Para ello necesitarás que dos (o más) columnas tengan alguna relación entre ellas.

La cláusula JOIN puede tener un modificador, los modificadores posibles son:

  • INNER o dejar en blanco porque es el valor por defecto
  • LEFT o LEFT OUTER (son sinónimos)
  • RIGHT o RIGHT OUTER (son sinónimos)
  • FULL o FULL OUTER (son sinónimos)

El modificador INNER devuelve las filas cuya columna/s de relación se encuentran en ambas tablas. Es lo mismo que hace el comando SET RELATION en el lenguaje Visual FoxPro. Este es el modificador por defecto o sea el modificador que se usará en el JOIN si ninguno es especificado.

El modificador LEFT devuelve todas las filas que se encuentran en la tabla de la izquierda (o sea, la tabla escrita a continuación de la cláusula FROM) y solamente las filas de la tabla de la derecha que cumplen la relación.

El modificador RIGHT devuelve todas las filas que se encuentran en la tabla de la derecha (o sea, la tabla escrita a continuación de la cláusula JOIN) y solamente las filas de la tabla de la izquierda que cumplen la relación.

El modificador FULL devuelve todas las filas de la tabla de la izquierda (o sea, la tabla escrita a continuación de la cláusula FROM) y todas las filas de la tabla de la derecha (o sea, la tabla escrita a continuación de la clásula JOIN).

El siguiente gráfico te ayudará a entender mejor a esos modificadores:

Visual_SQL_JOINS

(haciendo click en el gráfico lo verás más grande)

Siempre que tengas alguna duda sobre como funcionan los modificadores del JOIN (INNER, LEFT, RIGHT, FULL) revisa este gráfico que te ayudará a entender.

Recuerda que si no escribes un modificador se usará INNER.

En los siguientes artículos de esta categoría veremos muchos ejemplos del uso de JOIN.