Ver Mensaje Individual
  #8 (permalink)  
Antiguo 25/07/2015, 09:46
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: Combinar 5 tablas ?

Un último consejo por ahora: Cuando los campos sean numéricos, no pongas el valor a comparar como cadena de texto.
Me refiero específicamente a es '3', que debería escribirse sin los apóstrofos (').
Cuando usas apostrofos contra una columna de tipo INT o cualquier otro numerico, obligas a MySQL a realizar conversiones implícitas que pueden afectar la performance en ciertos casos.
Por otro lado, si lo estás insertando programáticamente, por medio de un lenguaje en el que generes la consulta, al ponerlo así estás escondiendo errores de programación en el manejo de variables.
Para ser claro, supongamos que por algún defecto no detectado en el manejo de los formularios, la variable llegase vacía.
En ese caso al crear la consulta sin apostrofos quedaría así:
Código MySQL:
Ver original
  1.         DC.dir_cat_id, DC.dir_cat_nombre
  2.     FROM
  3.         dir_categ DC
  4.         INNER JOIN dir_rubro_x_cat DRC ON DC.dir_cat_id = DRC.dir_cat_id
  5.         INNER JOIN dir_rubro_x_empr DRE ON DRC.dir_rubro_id = DRE.dir_rubro_id
  6.         INNER JOIN dir_empresa DE ON DRE.dir_empr_id = DE.dir_empr_id
  7.     WHERE  DE.dom_id =
En ese caso, como el dato no llega, se rompe la sintaxis y la consulta dispara un error.

Pero si lo manejas con apostrofes, una variable vacía dejaría la consulta así:


Código MySQL:
Ver original
  1.         DC.dir_cat_id, DC.dir_cat_nombre
  2.     FROM
  3.         dir_categ DC
  4.         INNER JOIN dir_rubro_x_cat DRC ON DC.dir_cat_id = DRC.dir_cat_id
  5.         INNER JOIN dir_rubro_x_empr DRE ON DRC.dir_rubro_id = DRE.dir_rubro_id
  6.         INNER JOIN dir_empresa DE ON DRE.dir_empr_id = DE.dir_empr_id
  7.     WHERE  DE.dom_id = ''
Eso no te disparará el error de sintaxis, pero no devolvería datos, con lo que tu podrías creer que hay un error en la consulta, o en la base, o bien en la conexión, cuando en realidad el problema está en que el dato simplemente no llega desde el formulario.

¿Se entiende?

No pongas valores numéricos entre apóstrofos a menos que el campo con que los comparas sea VARCHAR.

Y no le tengas miedo a los errores. Los errores son la única forma de detectar que los programas están mal. El secreto es manejar las excepciones y capturar los errores para resolverlos. No esconderlos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)