Cuando necesitamos relacionar dos tablas (o más propiamente: dos conjuntos de resultados) podemos hacerlo usando un JOIN implícito o un JOIN explícito.

El JOIN implícito fue establecido en SQL-89 y ocurre cuando a continuación de la cláusula FROM escribimos una coma. La sintaxis es la siguiente:

SELECT
   Columna1,
   Columna2,
   Columna3
FROM
   Tabla1,
   Tabla2
WHERE
   MiCondición

Ejemplo 1:

SELECT
   PRD_CODSUC,
   SUC_NOMBRE,
   PRD_CODIGO,
   PRD_NOMBRE
FROM
   PRODUCTOS,
   SUCURSALES
WHERE
   PRD_CODSUC = SUC_CODIGO

El JOIN explícito fue establecido en SQL-92 y ocurre cuando escribimos la cláusula JOIN. La sintaxis es la siguiente:

SELECT
   Columna1,
   Columna2,
   Columna3
FROM
   Tabla1
JOIN
   Tabla2
      ON MiCondición

Ejemplo 2:

SELECT
   PRD_CODSUC,
   SUC_NOMBRE,
   PRD_CODIGO,
   PRD_NOMBRE
FROM
   PRODUCTOS
JOIN
   SUCURSALES
      ON PRD_CODSUC = SUC_CODIGO

Puntos importantes a recordar:

  1. El JOIN implícito (después del FROM escribir alguna coma) fue establecido en SQL-89, ya es obsoleto y no se recomienda su uso.
  2. El JOIN explícito (después del FROM escribir JOIN) fue establecido en SQL-92 y es la sintaxis recomendada.
  3. Tanto si usas el JOIN implícito como el JOIN explícito podrás obtener los mismos resultados cuando en ninguna de las columnas relacionadas hay NULL
  4. Con el JOIN implícito no se puede hacer OUTER JOIN
  5. Con el JOIN explícito sí se puede hacer OUTER JOIN
  6. Es muy mala idea en un solo SELECT mezclar JOINs implícitos con JOIN explícitos. O usas uno o usas el otro, pero nunca uses ambos porque te causará problemas.

Recomendación:

Los SELECTs que ya tienes escritos y que funcionan bien déjalos como están, no los toques, pero en todos los nuevos SELECTs que escribas usa la notación explícita (es decir: escribe la cláusula JOIN) porque es la recomendada y en pocos años ya casi nadie usará la notación implícita. Ya es “del viejazo”.

Artículos relacionados:

 Entendiendo a los JOIN

Ejemplo Nº 001 – Usando INNER JOIN

Ejemplo Nº 002 – Usando INNER JOIN eficientemente

El índice del blog Firebird21