Hola de nuevo dark_17:
el problema creo que no está en el uso del AND y el OR, sino en el uso de la condición IN. En primer lugar deberías decirnos de qué tipo de dato es tu colmna a.idapart... si es de tipo cadena, entonces debes tener cuidado con el uso de las comillas...
Supongamos que tienes estos datos:
Código MySQL:
Ver original+------+---------+---------------------+-------+
| ID | Usuario | Fecha | Datos |
+------+---------+---------------------+-------+
| 1 | uno | 2013-02-06 12:23:00 | 10 |
| 2 | dos | 2013-02-05 01:51:00 | 20 |
| 3 | uno | 2013-02-02 07:24:00 | 30 |
| 3 | uno | 2013-02-02 07:24:00 | 40 |
| 4 | tres | 2013-02-01 01:17:00 | 40 |
| 5 | cuatro | 2013-02-06 04:36:00 | 60 |
| 6 | uno | 2013-02-03 10:14:00 | 70 |
| 7 | dos | 2013-01-30 11:55:00 | 80 |
| 8 | cuatro | 2012-12-31 06:56:00 | 90 |
| 9 | tres | 2013-02-01 08:44:00 | 80 |
+------+---------+---------------------+-------+
10 rows
in set (0.00 sec
)
Si solo quieres obtener los registros para los usuarios uno y cuatro tendrías que hacer lo siguiente:
Código MySQL:
Ver original+------+---------+---------------------+-------+
| ID | Usuario | Fecha | Datos |
+------+---------+---------------------+-------+
| 1 | uno | 2013-02-06 12:23:00 | 10 |
| 3 | uno | 2013-02-02 07:24:00 | 30 |
| 3 | uno | 2013-02-02 07:24:00 | 40 |
| 5 | cuatro | 2013-02-06 04:36:00 | 60 |
| 6 | uno | 2013-02-03 10:14:00 | 70 |
| 8 | cuatro | 2012-12-31 06:56:00 | 90 |
+------+---------+---------------------+-------+
Un posible error que puede pasar con la manera en que lo estás haciendo es que tengas algo como esto:
Observa, no es lo mismo (
'uno','cuatro') a (
'uno,cuatro'). Por la sintaxis creo que estás utilizando algo de PHP, te recomiendo que veas qué es exactamente lo que estás ejecutando, en lugar de utilizar las variables $compacto, $fecha_antes y $fecha
Saludos
Leo.