Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/11/2009, 16:08
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 1 mes
Puntos: 2658
Respuesta: sintaxis right join

Bueno, no exactamente un producto cartesiano.
Según los manuales lo que hace es devolver todos los registros de la tabla izquierda (LEFT) que coincidan o no con los de la tabla derecha. Al hacerlo, al no haber coincidencia en la tabla derecha los campos de esta aparecen como NULL.
Es una forma muy útil para detectar los registros de una tabla que no tienen contrapartida, como por ejemplo: clientes que NO compraron cierto artículo, que NO compraron en determinadas fechas, que NO recibieron el pedido, etc.

En ocasiones se usa para poner a cero ciertos cálculos, usando para ello la función IFNULL(), de una forma: IFNULL(campo,0), de ese modo la tabla no devuelve NULL, sino un valor interpretable, que en realidad representa cero ventas, cero pedido, etc.
Esa transformación del NULL es primordial, porque en los reportes un NULL anula todas las operaciones, que pueden estar sumando, por ejemplo, valores lícitos en casi todos los casos.

Un detalle que debes tener en cuenta es que cuando lo usas, debes asegurarte de que la tabla izquierda es la que contiene todos los valores que si existen.
Para que se entienda: Si cruzas CLIENTES con PEDIDOS, Clientes debe ser la tabla izquierda...
¿Se comprende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)