Ver Mensaje Individual
  #8 (permalink)  
Antiguo 20/06/2009, 06:38
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
Puntos: 2658
Respuesta: Duda al hacer NATURAL LEFT JOIN

Citando al manual de referencia:
Cita:
El NATURAL [LEFT] JOIN de dos tablas se define semánticamente equivalente a un INNER JOIN o LEFT JOIN con una cláusula USING que nombra todas las columnas que existen en ambas tablas.
Esto significa que en realidad NATURAL LEFT JOIN existe por compatibilidad. Lo realmente funcional es INNER JOIN o LEFT JOIN.
En cualquiera de los dos casos se puede usar ON o USING para establecer los campos de enlace, pero con esta salvedad: USING requiere que los campos tengan el mismo nombre en ambas tablas, mientras que ON se puede usar en ese caso, o en el caso que los campos implicados tengan diferente nombre.
LEFT JOIN (y su contraparte RIGHT JOIN) opera con los campos devueltos de la primera tabla (a la izquierda de la sentencia), pero tanto uno como otro pueden devolver valoes en NULL, con lo que se debe considerar el problema. De allí lo de NOT NULL. El detalle es que la sintaxis sería en todo caso
Código sql:
Ver original
  1. campo IS NOT NULL
Puesto que no existe una función NULL como para escribir: Not Null(el_campo_que_te_sale_vacio_o_nulo).

LEF JOIN es la más funcional si lo que quieres es que coincidan las cosas con la primera tabla, o bien, si en este JOIN pueden necesitarse recuperar valores de la primera tabla aunque no haya correspondencias con la segunda. En ese caso, en esos campos se usa IFNULL(,) para evitar que en el campo aparezca en NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)