En mi opinión, la cláusula FROM es donde decido qué columnas necesito en las filas para que funcione mi cláusula SELECT. Es donde se expresa una regla de negocio que traerá a la misma fila, los valores necesarios en los cálculos. La regla comercial puede ser clientes que tienen facturas, lo que genera filas de facturas, incluido el cliente responsable. También podría ser lugares en el mismo código postal que los clientes, lo que da como resultado una lista de lugares y clientes cercanos.
Es donde trabajo con la centricidad de las filas en mi conjunto de resultados. Después de todo, simplemente nos muestran la metáfora de una lista en RDBMS, cada lista tiene un tema (la entidad) y cada fila es una instancia de la entidad. Si se entiende la centricidad de fila, se entiende la entidad del conjunto de resultados.
La cláusula WHERE, que se ejecuta conceptualmente después de definirse las filas en la cláusula from, elimina filas innecesarias (o incluye filas necesarias) para que la cláusula SELECT trabaje.
Como la lógica de unión puede expresarse tanto en la cláusula FROM como en la cláusula WHERE, y porque existen cláusulas para dividir y conquistar lógica compleja, elijo poner lógica de unión que implique valores en columnas en la cláusula FROM porque esencialmente expresando una regla comercial que es respaldada por valores coincidentes en columnas.
i.e.no voy a escribir una cláusula WHERE como esto:
WHERE Column1 = Column2
I pondrá que en la cláusula FROM como esto:
ON Column1 = Column2
Del mismo modo, si una columna es para ser comparado con valores externos (valores que puede o no estar en una columna), como comparar un código postal con un código postal específico, lo pondré en la cláusula WHERE porque básicamente digo que solo quiero filas como esta.
es decir, no voy a escribir una cláusula FROM como esto:
ON PostCode = '1234'
voy a poner eso en la cláusula WHERE de esta manera:
WHERE PostCode = '1234'
No sé por qué editó el título: ahora contiene errores. Ambas consultas son combinaciones y sus respectivas sintaxis están consagradas en el Estándar SQL-92. Tenga en cuenta que el estándar es internacional (ISO) además de ser estadounidense (ANSI). – onedaywhen
Del artículo de Wikipedia sobre [SQL] (http://en.wikipedia.org/wiki/SQL): "SQL fue adoptado como estándar por el Instituto Nacional de Estándares Americanos (ANSI) en 1986 como SQL-86 y el International. Organización para la Normalización (ISO) en 1987. " En la literatura, el calificador ISO/IEC parece ser mucho más común que ANSI; Creo que ANSI es frecuente en foros como Stackoverflow porque los productos como SQL Server y MySQL tienen palabras clave que usan la palabra "ANSI", p. ANSI_NULLS (no tengo idea de por qué no usan "ISO"); aunque estas son mis propias observaciones, dudo que sean pensamientos originales;) – onedaywhen
Tenga en cuenta que cada Estándar adopta (y agrega) las características del SQL Estándar anterior, de modo que las características del SQL Estándar nunca se desaprobaron, a lo que Hugh Darwen se refiere el [* Grillete de compatibilidad *] (http://www.dcs.warwick.ac.uk/~hugh/TTM/HAVING-A-Blunderful-Time.html). – onedaywhen