Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PostgreSQL (http://www.forosdelweb.com/f99/)
-   -   Case + Insert Into (http://www.forosdelweb.com/f99/case-insert-into-460997/)

Fabian olmos 31/01/2007 09:19

Case + Insert Into
 
Hola que tal, como estan?, miren necesito verificar varios estado sde una consulta, es decir, tengo una tabla con los siguientes campos:
cedula, fecha , hora_i, hora_ii,hora_iii,hora_iv. yo quiero ir insertando en esta tabla que se llama acceso. las horas de entrada y salida que tiene un empleado que son cuatro horas al dia.
yo lo pense asi:
hago un select a la bd desde php y si me da cero los registro hago insert si no voy preguntando por los campos y donde consiga el campo vacio ahi le hago un update a la tabla. pero luego pense si lo podria hace todo este proceso en el mismo sql e hice algo como esto pero me da un error :

Código PHP:


SELECT 
    
CASE WHEN(COUNT(cedula))==0 THEN
        
(INSERT INTO acceso.acceso (cedula,fecha,hora_iVALUES  (15836577,'2007-01-31','09:50'))
    
END 
FROM acceso
.acceso a 
WHERE a
.cedula=15836577 AND a.fecha='2007-1-31' 

quisiera saber si es posible o estoy haciendo una locura.

gracias.

netsistemas 05/02/2007 01:47

Re: Case + Insert Into
 
1º yo haria un select para ver si existe el registro.
Si no existe, esta claro... lo metes en el campo fecha1
Y si existe ya tienes el registro recuperado en tu lenguaje e programación y montas una instruccion, EN TU LENGUAJE de programacion algo así
IF VALORCAMPO(REGISTRO,FECHA2) = BLANCO THEN
SQL = "UPDATE TABLA SET FECHA2 = 'LAFECHA' WHERE..."
ELSEIF VALORCAMPO(REGISTRO,FECHA3) = BLANCO THEN
SQL = "UPDATE TABLA SET FECHA3 = 'LAFECHA' WHERE..."
ETC....

-----------
El count, salvo que tenga otra funcionalidad desconocidad por mi, solo sirve para contar registros, no para contar campo que tienen cierto criterio que creo es lo que tu pretendes en tu SQL.
salu2.


La zona horaria es GMT -6. Ahora son las 10:14.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.