Ver Mensaje Individual
  #11 (permalink)  
Antiguo 16/03/2011, 08:45
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: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta en BD relacional

La operación JOIN sin condiciones genera un producto entre las dos tablas, denominado producto cartesiano, donde cada registro de la primera se combina con cada registro de la segunda. Es precisamente por eso que no es una buena práctica y es preferible usar INNER/LEFT/RIGHT JOIN en lugar de comas.
Además, la coma y su equivalente JOIN lo que intentan hacer es combinar haciendo matching sobre campos que tengan el mismo nombre. Si las dos tablas comparten nombres, pero se trata de datos de dominio distinto, MySQL no lo puede saber y el resultado termina siendo erróneo.
De esto surgen algunos consejos:
1) Usa los mismos nombres de columna sólo para los mismos tipos de datos, con el mismo dominio.
2) No uses nombres demasiado genéricos, como ID, CANT, o cosas así. Es mejor ponerles un sufijo o prefijo con el nombre de la tabla, de modo que facilite recordarlos.
3) Cuando uses FK, no le cambies el nombre en la tabla. Usa el mismo nombre que tiene en su tabla de origen; eso permite escribir las consultas con más facilidad y eficiencia.
4) No te olvides de las condiciones de relación (el ON del INNER JOIN), porque de lo contrario el parser no sabrá con seguridad qué estás relacionando.
5) Procura no usar la coma. Como ya viste, tiende a producir errores con facilidad.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)