Forzar una condición en WHERE (MySQL)
Publicado por Kathyu (905 intervenciones) el 08/11/2019 18:05:23
Hola, ya días no pregunto pero creo que ya le he dado muchas vueltas a este asunto.
Tengo una tabla que debo poblar por medio de una consulta la cual por alguna razón no hago funcionar bien.
Las condiciones para que mi vista "se dibuje" son:
1- Que el campo datetime dir_general sea null
2- Que el Estado sea 9
3- Que el Total pase de $1500.01
4- Pero me dijeron que el mismo departamento puede hacer compras menores de $1500 y que igual las deben gestionar
Tengo la query
Que devuelve los 5 registros de prueba que tengo

Pero tengo un proceso de recepción de esos registros ese proceso lo que hace es que le coloca una fecha en el campo dir_general por lo que una vez recepcionado ya no debería ser halado por la query, peeero

Si se fijan el OR DI.nombre = 'DIRECCION GENERAL' es el que hace que no desaparezcan aunque ponga en primer plano en el WHERE que dir_general sea NULL, investigue sobre IFNULL de MySQL pero nada.
Alguna idea de como hacer que no muestre nada que no sea NULL en dir_general?
Tengo una tabla que debo poblar por medio de una consulta la cual por alguna razón no hago funcionar bien.
Las condiciones para que mi vista "se dibuje" son:
1- Que el campo datetime dir_general sea null
2- Que el Estado sea 9
3- Que el Total pase de $1500.01
4- Pero me dijeron que el mismo departamento puede hacer compras menores de $1500 y que igual las deben gestionar
Tengo la query
1
2
3
4
5
6
7
SELECT S.id, S.fecha, S.total, S.token, S.usuario, S.archivo,S.estado,SS.dir_general,DI.nombre AS direccion
FROM solicitud S INNER JOIN solicitud_seguimiento SS ON SS.token = S.token
INNER JOIN usuario U ON U.nick = S.usuario
INNER JOIN departamento DE ON DE.id = U.depart
INNER JOIN direccion DI ON DI.id = DE.direccion
WHERE SS.dir_general IS NULL AND S.estado = 9 AND S.total >= 1500.01 OR DI.nombre = 'DIRECCION GENERAL'
ORDER BY S.fecha DESC
Que devuelve los 5 registros de prueba que tengo

Pero tengo un proceso de recepción de esos registros ese proceso lo que hace es que le coloca una fecha en el campo dir_general por lo que una vez recepcionado ya no debería ser halado por la query, peeero

Si se fijan el OR DI.nombre = 'DIRECCION GENERAL' es el que hace que no desaparezcan aunque ponga en primer plano en el WHERE que dir_general sea NULL, investigue sobre IFNULL de MySQL pero nada.
Alguna idea de como hacer que no muestre nada que no sea NULL en dir_general?
Valora esta pregunta


-1