Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PostgreSQL (http://www.forosdelweb.com/f99/)
-   -   Pista de como hacerlo.... (http://www.forosdelweb.com/f99/pista-como-hacerlo-530583/)

Adoniasv 04/11/2007 11:10

Pista de como hacerlo....
 
Tengo la siguiente tabla:

http://www.adonias.cl/tabla.JPG

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

http://img219.imageshack.us/img219/7678/tablaxi9.th.jpg

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..

cacr 05/11/2007 06:42

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,

Adoniasv 05/11/2007 14:43

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 ?

Adoniasv 06/11/2007 08:28

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


La zona horaria es GMT -6. Ahora son las 07:32.

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