PDA

Ver la Versión Completa : Filtros en tablas. Diferencias entre SQL 87 y 92


dec
01-07-2006, 02:00:23
Si ponemos el ejemplo:


SELECT c.Cliente,c.Nombre,h.Articulo,h.Cantidad
from clientes c, historico h
where ( c.cliente = h.Cliente )


Tendremos un resultado que es una tabla virtual que contiene el producto cartesiano del cruzamiento de ambas tablas (Es decir que solo saldrán los datos que estén en ambas tablas y no saldrá un cliente que no tenga movimientos), esto es lo que lo que se suele llamar aritmética relacional.

En esta sintaxis estamos empleando SQL 87 y es una sintaxis muy antigua ya que la clausula WHERE se utiliza para relacionar y no para filtrar.

Si pasamos a SQL 92 lo haremos con la siguiente sintaxis:


SELECT c.Cliente,c.Nombre,h.Articulo,h.Cantidad
from clientes c
JOIN historico h ON ( c.cliente = h.Cliente )


Es lo mismo salvo que hemos añadido: JOIN y la clausula de unión se establece en ON.

Si ahora añadimos LEFT delante de JOIN:


SELECT c.Cliente,c.Nombre,h.Articulo,h.Cantidad
from clientes c
LEFT JOIN historico h ON ( c.cliente = h.Cliente )


Entonces obtendemos TODOS los registros de la tabla de la izquierda. También existen otras clausulas RIGHT, INNER, OUTER, etc...