Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Filtros en tablas. Diferencias entre SQL 87 y 92 (https://www.clubdelphi.com/foros/showthread.php?t=80695)

dec 01-07-2006 02:00:23

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...


La franja horaria es GMT +2. Ahora son las 00:19:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi