Ver Mensaje Individual
  #1  
Antiguo 01-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Filtros en tablas. Diferencias entre SQL 87 y 92

Si ponemos el ejemplo:

Código SQL [-]
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:

Código SQL [-]
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:

Código SQL [-]
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...
Responder Con Cita