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 DC.dir_cat_id, DC.dir_cat_nombre
dir_categ DC
INNER JOIN dir_rubro_x_cat DRC
ON DC.dir_cat_id
= DRC.dir_cat_id
INNER JOIN dir_rubro_x_empr DRE
ON DRC.dir_rubro_id
= DRE.dir_rubro_id
INNER JOIN dir_empresa DE
ON DRE.dir_empr_id
= DE.dir_empr_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 DC.dir_cat_id, DC.dir_cat_nombre
dir_categ DC
INNER JOIN dir_rubro_x_cat DRC
ON DC.dir_cat_id
= DRC.dir_cat_id
INNER JOIN dir_rubro_x_empr DRE
ON DRC.dir_rubro_id
= DRE.dir_rubro_id
INNER JOIN dir_empresa DE
ON DRE.dir_empr_id
= DE.dir_empr_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.