sql >> Base de Datos >  >> RDS >> Oracle

Visibilidad de diferencia en la combinación de subconsultas y dónde

en

FROM working_place wp 
JOIN working_place_worker wpw ON ... 
WHERE ...

el ON cláusula se refiere solamente a las dos tablas que participan en la combinación, a saber, wp y wpw . Los nombres de la consulta externa no son visibles para ella.

El WHERE cláusula (y su prima HAVING es el medio por el cual la consulta externa se correlaciona con la subconsulta. Los nombres de la consulta externa son visible para él.

Para que sea fácil de recordar,

  • ON se trata de JOIN, cómo se relacionan dos tablas para formar una fila (o filas)
  • DÓNDE se trata de los criterios de selección, la prueba que deben pasar las filas

Si bien el analizador de SQL admitirá literales (que no son nombres de columna) en la cláusula ON, dibuja la línea en las referencias a las columnas fuera de la unión. Podría considerar esto como un favor que protege contra errores.

En tu caso, el wo la tabla no es parte de JOIN , y es rechazado. Es es parte de la consulta completa, y es reconocido por WHERE .