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

Combinar dos tablas en una

Estas en el tema de Combinar dos tablas en una en el foro de Mysql en Foros del Web. Amigos , antes que nada , agradezco la oprtunidad de ingresar a este foro. mi consulta es la siguiente Tengo 2 tablas en mysql , ...
  #1 (permalink)  
Antiguo 02/08/2011, 15:55
 
Fecha de Ingreso: agosto-2011
Mensajes: 6
Antigüedad: 13 años, 3 meses
Puntos: 1
Combinar dos tablas en una

Amigos , antes que nada , agradezco la oprtunidad de ingresar a este foro.

mi consulta es la siguiente

Tengo 2 tablas en mysql , la primera muestra datos de llamadas telefonicas y numeros de destinos, cantidad de segundos y la segunda muestra los prefijos del destino , el nombre del destino y el precio de la llamada.

lo que necesitos es que es crear una tercera que combine esta informacion y asi la nueva tabla contenga , las llamadas , el numero de destino , el destino en palabras , los minutos hablados y el valor a pagar.

agradecere cualquier comentario , para llegar a buen puerto con esta idea
  #2 (permalink)  
Antiguo 02/08/2011, 17:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Combinar dos tablas en una

No parece haber relación entre los números de destino con los prefijos de los destinos de la segunda tabla. En ese contexto, puedes tener números telefónicos iguales en localidades distintas y con diferentes prefijos.
Tiene que haber una forma de vincular el número al prefijo y eso no se ve en tu ejemplo. Sin eso la consulta no se puede realizar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/08/2011, 15:49
 
Fecha de Ingreso: agosto-2011
Mensajes: 6
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Combinar dos tablas en una

Estimado gracias por contestar a mi consulta , te explico

la primera tabla tiene registros de los clientes , por ejemplo cliente ,numero de origen , numero discado, dia y hora de la llamada , segundos de duracion

basandome en eso , cree otra tabla precios donde aparecen, los prefijos (00511) , el destino (lima peru) y el valor por el minuto o segundo.

la idea seria que se cree otra tabla o algo , donde me aparezca lo siguiente :

cliente, numero de origen , numero de destino , destino ,fecha y hora de llamada , cantidad en minutos , y el valor de la llamada basándome en la tabla anterior de precios

Agradecere cualquier ayuda
  #4 (permalink)  
Antiguo 03/08/2011, 18:14
 
Fecha de Ingreso: marzo-2008
Mensajes: 8
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Combinar dos tablas en una

Creo que si queres obtener esos datos juntos tendrías que programar alguna pequeña aplicación en php o algún otro lenguaje que a partir de cada entrada en la primera tabla busque el prefijo y el valor en la segunda, y devuelva los valores.
Sino creo que no sirve de nada tener otra tabla más con los datos duplicados. Saludos!
  #5 (permalink)  
Antiguo 03/08/2011, 20:33
 
Fecha de Ingreso: abril-2008
Ubicación: Santa Fe, Argentina
Mensajes: 41
Antigüedad: 16 años, 7 meses
Puntos: 14
Respuesta: Combinar dos tablas en una

Cita:
Iniciado por d4ri0 Ver Mensaje
Sino creo que no sirve de nada tener otra tabla más con los datos duplicados.
Se llaman vistas y se pueden programar directamente en el DBMS. Su uso es esotérico, por no encontrar una mejor palabra.

Suponiendo que tenemos los siguientes datasets

Código:
mysql> SELECT * FROM llamadas;
+-----------+-----------+----------+
| idcliente | discado   | duracion |
+-----------+-----------+----------+
|         1 | 005113349 |       70 |
|         1 | 005121122 |       50 |
|         1 | 005121123 |       40 |
|         2 | 005132321 |       90 |
|         2 | 005123344 |      120 |
|         3 | 005123411 |       40 |
+-----------+-----------+----------+
Código:
mysql> SELECT * FROM tarifas;
+---------+---------+-------+
| prefijo | destino | valor |
+---------+---------+-------+
| 00511   | Lima    |     5 |
| 00512   | Bagua   |     7 |
| 00513   | Bolivar |     3 |
+---------+---------+-------+
Procedemos a crear una vista que muestre el cliente, el número discado, la provincia de destino y la duración y valor de la llamada. Empezamos armando el select que va a utilizar la vista

Código:
mysql> SELECT idcliente, discado, destino, duracion, (duracion * valor) AS costo FROM llamadas LEFT JOIN tarifas ON LEFT(discado, LENGTH(prefijo)) = prefijo ORDER BY idcliente;
+-----------+-----------+---------+----------+-------+
| idcliente | discado   | destino | duracion | costo |
+-----------+-----------+---------+----------+-------+
|         1 | 005113349 | Lima    |       70 |   350 |
|         1 | 005121122 | Bagua   |       50 |   350 |
|         1 | 005121123 | Bagua   |       40 |   280 |
|         2 | 005123344 | Bagua   |      120 |   840 |
|         2 | 005132321 | Bolivar |       90 |   270 |
|         3 | 005123411 | Bagua   |       40 |   280 |
+-----------+-----------+---------+----------+-------+
Luego creamos la vista con esa consulta

Código:
CREATE VIEW reporte AS SELECT idcliente, discado, destino, duracion, (duracion * valor) AS costo FROM llamadas LEFT JOIN tarifas ON LEFT(discado, LENGTH(prefijo)) = prefijo ORDER BY idcliente;
Y procedemos a ver qué resulta

Código:
mysql> SELECT * FROM reporte;
+-----------+-----------+---------+----------+-------+
| idcliente | discado   | destino | duracion | costo |
+-----------+-----------+---------+----------+-------+
|         1 | 005113349 | Lima    |       70 |   350 |
|         1 | 005121122 | Bagua   |       50 |   350 |
|         1 | 005121123 | Bagua   |       40 |   280 |
|         2 | 005123344 | Bagua   |      120 |   840 |
|         2 | 005132321 | Bolivar |       90 |   270 |
|         3 | 005123411 | Bagua   |       40 |   280 |
+-----------+-----------+---------+----------+-------+
Esto nos sirve para calcular al vuelo, por ejemplo, cuanto tarifar a un cliente

Código:
mysql> SELECT idcliente, SUM(costo) FROM reporte GROUP BY idcliente;
+-----------+------------+
| idcliente | SUM(costo) |
+-----------+------------+
|         1 |        980 |
|         2 |       1110 |
|         3 |        280 |
+-----------+------------+
  #6 (permalink)  
Antiguo 04/08/2011, 06:56
 
Fecha de Ingreso: agosto-2011
Mensajes: 6
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Combinar dos tablas en una

Gracias Amigo,

Realmete me sirvio , lo programe como me indicaste y resulto al toke.

ahora voy a tratar de que salga en una pagina web para que trabaje solito.

muy agradecido .

de todas maneras si tienes un tip que me digas como pegarlo en la pagina web en php te lo agradeceria

Etiquetas: combinar, sql, tabla, 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 13:51.