Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

SELECT si un campo esta completo y tiene cierto valor.

Estas en el tema de SELECT si un campo esta completo y tiene cierto valor. en el foro de Mysql en Foros del Web. Tengo unas solicitudes a las que se les asigna una persona responsable y hasta 4 sectores que intervienen en la misma (minimo 1 sector, maximo ...
  #1 (permalink)  
Antiguo 10/01/2008, 11:37
 
Fecha de Ingreso: mayo-2006
Mensajes: 178
Antigüedad: 18 años
Puntos: 7
SELECT si un campo esta completo y tiene cierto valor.

Tengo unas solicitudes a las que se les asigna una persona responsable y hasta 4 sectores que intervienen en la misma (minimo 1 sector, maximo 4, no siempre participan los 4). Necesito mostrar esta solicitud a la persona responsable si y solo si todos los sectores que intervienen dieron su aprobacion.

1) El registro tiene que estar habilitado.
2) El registro debe haber sido mostrado a todos los sectores intervinientes.
3) Tiene que ser para la persona que esta viendo la página.
4) Esta persona no lo tiene que haber hecho, debe tenerlo pendiente.
5) Tengo que verificar que sector participa y si este lo aprobo o no.

El problema lo tengo en el punto 4, logre que si un sector no aprueba la solicitud, esta no se muestre al responsable. Pero cuando participan mas de un sector la consulta no funciona y le muestra la solicitud al responsable aun cuando un sector la haya aprobado y otro no.

Código PHP:
SELECT sacp_sacpIDsacp_nrosacp_aniosacp_fechasacp_resolucion_plazosacp_correctiva_preventiva
FROM calidad_sacp s 
WHERE sacp_habilitado_sys
='1' AND sacp_resolucion_responsableID 12 AND sacp_resolucion_responsable_realizado='0' AND sacp_mostrar '1' AND 
(
 (if(
sacp_resolucion_interviniente_sectorID_1 IS NOT NULL,'PARTICIPA','NP')=if(sacp_resolucion_interviniente_firmaID_1 IS NOT NULL,'PARTICIPA','NP') AND sacp_resolucion_interviniente_sectorID_1 IS NOT NULL) OR
 (if(
sacp_resolucion_interviniente_sectorID_2 IS NOT NULL,'PARTICIPA','NP')=if(sacp_resolucion_interviniente_firmaID_2 IS NOT NULL,'PARTICIPA','NP') AND sacp_resolucion_interviniente_sectorID_2 IS NOT NULL) OR
 (if(
sacp_resolucion_interviniente_sectorID_3 IS NOT NULL,'PARTICIPA','NP')=if(sacp_resolucion_interviniente_firmaID_3 IS NOT NULL,'PARTICIPA','NP') AND sacp_resolucion_interviniente_sectorID_3 IS NOT NULL) OR
 (if(
sacp_resolucion_interviniente_sectorID_4 IS NOT NULL,'PARTICIPA','NP')=if(sacp_resolucion_interviniente_firmaID_4 IS NOT NULL,'PARTICIPA','NP') AND sacp_resolucion_interviniente_sectorID_4 IS NOT NULL)

  #2 (permalink)  
Antiguo 10/01/2008, 13:16
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: SELECT si un campo esta completo y tiene cierto valor.

Ok... prueba reformulando la lógica de la condición en:

((sacp_resolucion_interviniente_sectorID_1 IS NULL OR sacp_resolucion_interviniente_firmaID_1 IS NOT NULL) AND
(sacp_resolucion_interviniente_sectorID_2 IS NULL OR sacp_resolucion_interviniente_firmaID_2 IS NOT NULL) AND
(sacp_resolucion_interviniente_sectorID_3 IS NULL OR sacp_resolucion_interviniente_firmaID_3 IS NOT NULL) AND
(sacp_resolucion_interviniente_sectorID_4 IS NULL OR sacp_resolucion_interviniente_firmaID_4 IS NOT NULL))

Esto se lee así:
Si un sector no participa no tiene poder de veto, es decir, no oculta la información. Pero si participa, entonces debe haberlo firmado(¿?)

Te sirve?
  #3 (permalink)  
Antiguo 11/01/2008, 05:34
 
Fecha de Ingreso: mayo-2006
Mensajes: 178
Antigüedad: 18 años
Puntos: 7
Re: SELECT si un campo esta completo y tiene cierto valor.

Gracias maestro! Funcionó perfecto!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:50.