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

Pista de como hacerlo....

Estas en el tema de Pista de como hacerlo.... en el foro de PostgreSQL en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 04/11/2007, 11:10
Adoniasv
Invitado
 
Mensajes: n/a
Puntos:
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..
  #2 (permalink)  
Antiguo 05/11/2007, 06:42
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
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!
  #3 (permalink)  
Antiguo 05/11/2007, 14:43
Adoniasv
Invitado
 
Mensajes: n/a
Puntos:
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 ?
  #4 (permalink)  
Antiguo 06/11/2007, 08:28
Adoniasv
Invitado
 
Mensajes: n/a
Puntos:
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

Última edición por Adoniasv; 06/11/2007 a las 08:35
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 00:50.