Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/12/2008, 04:23
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 10 meses
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