Hola catpaw:
Muchas veces hemos tratado en este foro el problema de utilizar en el WHERE los operadores AND y OR a la vez, pero tal pareciera que los foristas no han leído al respecto...
el operador AND y el operador OR, tienen una jerarquía distinta, por lo que debes hacer un uso correcto de los paréntesis.
En matemáticas si tu haces esto:
ya que el operador de multiplicación TIENE MAYOR JERARQUÍA que el operador de suma, por lo tanto no importa que la suma aparezca más a la izquierda de la operación, PRIMERO SE EJECUTA LA MULTIPLICACIÓN y en enseguida se hace la suma.
Por otro lado, si tu haces esto:
Esto es porque al colocar paréntesis indicas que se tiene que realizar primeramente la suma y después la resta. Lo mismo pasa con el AND y el OR... no entendí muy bien la explicación que das acerca de tu lógica de negocio, pero creo que sería simpelemente hacer algo como esto:
Código MySQL:
Ver original+------------+------------+
| id_carpeta | id_permiso |
+------------+------------+
| 1 | 3 |
| 2 | 2 |
+------------+------------+
-> WHERE id_permiso
='3' AND (id_carpeta
='1' OR id_carpeta
='2') +------------+------------+
| id_carpeta | id_permiso |
+------------+------------+
| 1 | 3 |
+------------+------------+
Dale un vistazo para ver si ese es el problema, pero si no funciona, trata de explicar mejor cómo es la condición que tienes que evaluar.
Saludos
Leo.