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

Duda con Select

Estas en el tema de Duda con Select en el foro de Bases de Datos General en Foros del Web. Saludos a todos, vuelvo al foro (despues de mucho tiempo) con una nueva duda... Tengo este esquema de una base de datos: http://www.freewebs.com/oxbowc/db_Schema.html Lo que ...
  #1 (permalink)  
Antiguo 29/12/2008, 17:44
 
Fecha de Ingreso: septiembre-2006
Mensajes: 328
Antigüedad: 17 años, 8 meses
Puntos: 3
Duda con Select

Saludos a todos, vuelvo al foro (despues de mucho tiempo) con una nueva duda...

Tengo este esquema de una base de datos: http://www.freewebs.com/oxbowc/db_Schema.html

Lo que necesito es una suma de la duracion total de las llamadas a un mismo numero y el nombre al que le corresponde ese numero, recordando que pueden haber mas de una llamada al mismo numero y que una persona tiene mas de un numero.
  #2 (permalink)  
Antiguo 30/12/2008, 04:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Duda con Select

Yo usaría otro esquema con tres tablas
usuario
usuario_id (INT) PK
apellidos VARCHAR
nombre VARCHAR

telefonousuario
telefonousuario_id (INT) pk
refidusuario (INT) FK
telefono INT o varchar
nºorden INT


llamadas
llamada_id ( INT) PK
refidtelefono (INT) FK
tiempo (time)

con datos:
usuario
usuario_id|apellidos|nombre
1|Ramírez Sanz|Felipe (nombres inventados)
2|Sánchez|Luis

telefonousuario
telefonousuario_id|refidusuario|telefono|nºorden
1|1|999999999|1
2|1|666666666|2
3|2|888888888|1
4|2|444444444|2

llamadas
llamada_id|refidtelefono|tiempo
1|1|00:15:22
2|4|00:02:54
3|3|00:24:06

etc.

CONSULTA:

Código sql:
Ver original
  1. SELECT CONCAT(usuario.nombre,' ', usuario.apellidos) nombre_propietario, telefonousuario.telefono,
  2. SEC_TO_TIME(SUM(TIME_TO_SEC(llamadas.tiempo))) total_tiempo_telefono
  3.  FROM llamadas INNER JOIN telefonousuario ON llamadas.refidtelefono = telefonousuario.telefonousuario_id
  4.  INNER JOIN usuarios ON usuarios.usuario_id = telefonousuario.telefonousuario_id
  5.  GROUP BY telefonousuario.telefonousuario_id

No lo he probado.
He puesto el teléfono como INT, pero puedes ponerlo como VARCHAR si quieres escribir guiones separadores.

EDITO: se podrían mejorar otras cosas, como hacer que refidtelefono de llamadas fuera numérico y estuviese relacionado con numero de telefonousuario_id (con lo que el cruce lo haces ON telefonousuario.telefonousuario_id = llamadas.refidtelefono), pero no sé cómo vas a cargar esos datos en las tablas. He corregido los datos para que los veas de esta otra forma.

Última edición por jurena; 30/12/2008 a las 10:13
  #3 (permalink)  
Antiguo 30/12/2008, 05:06
 
Fecha de Ingreso: junio-2004
Ubicación: Argentina
Mensajes: 150
Antigüedad: 19 años, 10 meses
Puntos: 2
Respuesta: Duda con Select

Hola, no entendi bien lo que necesitas hacer, pero podrias probar:

SELECT llamada_destino As Destino,
llamada_origen As Origen,
llamada_duracion As Duracion,
usuarios.nombre As Usuario,
FROM llamadas
INNER JOIN usuarios ON
usuarios.numero = llamadas.llamada_origen

Aca tendrias la lista de llamadas.

Para saber la duración total bastaria que hagas "SELECT COUNT(duracion_llamada) FROM llamadas WHERE llamada_origen LIKE 'numero' ".


Saludos.
  #4 (permalink)  
Antiguo 30/12/2008, 06:13
 
Fecha de Ingreso: septiembre-2006
Mensajes: 328
Antigüedad: 17 años, 8 meses
Puntos: 3
Respuesta: Duda con Select

gracias a ambos por sus respuestas, creo que me ire por la vertiente de JURENA porque la de FedericoC se que no se puede, el problema esta en k al un usuario tener varios numeros, no puedo hacer el inner join con un solo campo, sino con todos ellos.

Esta noche cuando llegue del trabajo cambiare mi esquema de la base de datos a ver como me resulta, pero creo que tienes razon (Jurena)... Es muy probable que con ese esquema hasta pueda hacerlo solo. Esta noche les digo como me fue xD.
  #5 (permalink)  
Antiguo 01/01/2009, 10:53
 
Fecha de Ingreso: septiembre-2006
Mensajes: 328
Antigüedad: 17 años, 8 meses
Puntos: 3
Respuesta: Duda con Select

Efectivamente, con ese esquema de la base de datos que me proporciono JURENA pude hacerlo sin problemas. Gracias again. Por eso siempre me gusta venir aqui.
  #6 (permalink)  
Antiguo 04/01/2009, 15:10
 
Fecha de Ingreso: diciembre-2008
Mensajes: 3
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Duda con Select

Si , al parecer era necesario hacerlo con tres tablas
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 21:12.