Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > PostgreSQL

Respuesta
 
Herramientas Desplegado
Antiguo 04-nov-2007, 10:10   #1 (permalink)
Adoniasv está en el buen camino
 
Avatar de Adoniasv
 
Fecha de Ingreso: septiembre-2003
Ubicación: Viña del MAr - Chile - F:(09)6900651
Mensajes: 90
Enviar un mensaje por ICQ a Adoniasv Enviar un mensaje por MSN a Adoniasv
Pista de como hacerlo....

Tengo la siguiente tabla:



La dejo en imgshack, por si mi server se cae:



Esta tabla corresponde a llamados telefonicos, y lo que necesito mostrar es el tiempo que duro la llamada, o si fallo o si no respondieron.

Tipo: 6 Indica que colgaron

Tipo : 10 indica que la llamada fue respondida

Tipo : 9 indica que la llamada fallo.

Por ejeplo:

La ID 7 indica que comenzo el llamado, la tabla ID 10 indica que contesto, y el ID 11 dice que colgo.

Entonces, como puedo saber los segundos que transcurrieron entre el ID 10 y el 11.

Se me habia ocurrido algo asi:

Código PHP:
//convertir los horarios a segundos
(extract(EPOCH from HORARIO)  - extract(EPOCH from HORARIO) ) order by ID ASC 
pero no se como agruparlos (SEGUN ID_2), o decirle que haga el EPOCH en la fila WHERE TIPO = '10' or '6'.

Porfavro alguien me ayude!

Gracias

busque en el foro algo sobre subselect pero nada..
__________________
Atte
Adonias Vasquez
:cool: :cool: :cool: :cool: :cool:
http://www.adonias.cl
La mejor manera de Aprender Action Script, es viendo, Analisando y comprendiendo codigos y por sobre todo.... Seguir hasta el Fin
//y que traduscan el ASDG II en español...
Adoniasv está desconectado   Responder Citando
Antiguo 05-nov-2007, 05:42   #2 (permalink)
cacr está en el buen camino
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 523
Re: Pista de como hacerlo....

Saludos

El contenido de la tabla dice menos que el tipo de dato que estás usando...

Sí es timestamp, puedes hacer una resta normal... luego, puedes manipular el resultado para presentarlo de una u otra forma

Pendientes,
__________________
Gracias de todas todas
-----
Linux!
cacr está desconectado   Responder Citando
Antiguo 05-nov-2007, 13:43   #3 (permalink)
Adoniasv está en el buen camino
 
Avatar de Adoniasv
 
Fecha de Ingreso: septiembre-2003
Ubicación: Viña del MAr - Chile - F:(09)6900651
Mensajes: 90
Enviar un mensaje por ICQ a Adoniasv Enviar un mensaje por MSN a Adoniasv
Re: Pista de como hacerlo....

como no entiendo... disculpa mi ignorancia....esque toy re100 cachando bases de datos.

Puede ser un

Código PHP:
//Tipo 2 para ver cuando contastaron, y tipo 6 para cuando colgaron
select from tipo AND tipo 6 WHERE ID_2 myID 
ahi como haces para restar usas sum() despues de select ?
__________________
Atte
Adonias Vasquez
:cool: :cool: :cool: :cool: :cool:
http://www.adonias.cl
La mejor manera de Aprender Action Script, es viendo, Analisando y comprendiendo codigos y por sobre todo.... Seguir hasta el Fin
//y que traduscan el ASDG II en español...
Adoniasv está desconectado   Responder Citando
Antiguo 06-nov-2007, 07:28   #4 (permalink)
Adoniasv está en el buen camino
 
Avatar de Adoniasv
 
Fecha de Ingreso: septiembre-2003
Ubicación: Viña del MAr - Chile - F:(09)6900651
Mensajes: 90
Enviar un mensaje por ICQ a Adoniasv Enviar un mensaje por MSN a Adoniasv
Exclamación Re: Pista de como hacerlo....

OK lo hice de la siguente manera. No sera la mas ortodoxa, pero esta funcionando.

myDB es una clase que ocupe..

Código PHP:
    //Selecciono desde la tabla los llamados que han sido contestados (TIPO 2)
    
$myDB->query("SELECT * FROM history WHERE TIPO= 2 AND HORARIO >= '".$Horario_oficina."' ORDER BY ID DESC");

    echo 
'Num('.$myDB->numRows().') - ';
    echo 
'Error('.$myDB->error().')<br>';
    
    
//Ejecuto el While para sacar los datos
    
while($Datos $myDB->fetchArray()){

            
//De la misma tabla enterior busco segun el ID_2 a que hora colgo (TIPO 6)
            
$Hora dbQueryFirst("SELECT * FROM history WHERE ID_2 = '".$Datos['ID_2']."' AND TIPO = '6' ");
            
    
                
// lo que esta entre [] me muestra la resta entre el horario de fin y el horario de inicio, y asi se cuantos segundos hablaron
        
echo 'Inicio de la llamada:'.$Datos['HORARIO'].' - Fin de la llamada:'.$Hora['HORARIO'].' ->['.(strtotime($Hora['HORARIO']) - strtotime($Datos['HORARIO'])).'] ; Numero de destino:'.$Datos['HASTA'].', Desde:'.$Datos['DESDE'].'<br>'

    

Estoy seguro de que debe haber una manera mas facil de hacerlo, por si alguien me da una pista.

Intente hacerlo de la siguiente manera, pero no me funciono, ni me dio ningun error.

Código PHP:
//No da nigun resultado
$myDB->query("SELECT ID_2, (SELECT HORARIO FROM history WHERE TIPO = '2') AS LLAMADO_INI, (SELECT HORARIO FROM history WHERE TIPO = '6') AS LLAMADO_FIN FROM history  WHERE HORARIO >= '".$Horario_oficina."' GROUP BY ID_2"); 
En fin, si alguien sabe el porque no muestra nada me avisa
__________________
Atte
Adonias Vasquez
:cool: :cool: :cool: :cool: :cool:
http://www.adonias.cl
La mejor manera de Aprender Action Script, es viendo, Analisando y comprendiendo codigos y por sobre todo.... Seguir hasta el Fin
//y que traduscan el ASDG II en español...

Última edición por Adoniasv; 06-nov-2007 a las 07:35.
Adoniasv está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 19:52.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93