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

Convertir filas en columnas

Estas en el tema de Convertir filas en columnas en el foro de Mysql en Foros del Web. Tengo una tabla de teléfonos que cuenta con los siguientes campos: idtelefono (campo clave), idcliente, tipotel, numero. Cada cliente puede tener más de un teléfono, ...
  #1 (permalink)  
Antiguo 11/03/2013, 22:45
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Convertir filas en columnas

Tengo una tabla de teléfonos que cuenta con los siguientes campos: idtelefono (campo clave), idcliente, tipotel, numero. Cada cliente puede tener más de un teléfono, y cada teléfono genera un nuevo registro.

Lo que yo quiero es, realizando una consulta, obtener una tabla donde figuren como columnas idcliente, tipotel, numero. Si un cliente tiene 2 teléfonos deberían figurar 2 veces las columnas tipotel y numero en la fila de ese cliente. Cada cliente ocupará una sola fila en la tabla. Sé que si esto sucede la tabla que obtenga puede llegar a tener muchas columnas, varias de las cuales, estarán vacías en la mayoría de los registros. Pero esto no sería un problema.

¿Es posible hacer esto o al estar la tabla armada de esta forma se complica?

Muchas gracias.
  #2 (permalink)  
Antiguo 12/03/2013, 02:32
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Convertir filas en columnas

Si se complica pero es la forma correcta de guardar esos datos.

Podrias usar GROUP_CONCAT y tratar el string que te generara con programación externa.

O usar

Código MySQL:
Ver original
  1. SELECT MAX(nTelefonos)
  2. FROM (SELECT idcliente,count(idtelefono) nTelefons FROM telefonos GROUP BY idcliente)

para saber el numero de columnas y luego

Código MySQL:
Ver original
  1. SELECT c.cliente,
  2.              t.idcliente,
  3.              t.tipotel,
  4.              t.numero
  5. FROM clientes c INNER JOIN telefonos c.idcliente=t.idcliente
  6. ORDER BY c.cliente,t.tipotel;

para construir la tabla usando el maximo obtenido en la anterior para agregar las columnas vacias. Todo esto en programación externa.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 13/03/2013, 01:54
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Convertir filas en columnas

Te agradezco. ¿Podrías especificar un poco más lo de "programación externa"? ¿Te refieres a utilizar otro lenguaje para analizar los datos obtenidos en las consultas que me dejaste o a otra cosa? Muchas gracias.
  #4 (permalink)  
Antiguo 13/03/2013, 04:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Convertir filas en columnas

En general se habla de programación externa cuando algo lo harás en la aplicación desde la cual harás las consultas.
Es decir, programando...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 13/03/2013, 04:37
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Convertir filas en columnas

Cita:
¿Te refieres a utilizar otro lenguaje para analizar los datos obtenidos en las consultas que me dejaste o a otra cosa?
A utilizar otro lenguaje para analizar los datos obtenidos en las consultas que me dejaste ... y generar el listado en el formato deseado.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 13/03/2013, 11:38
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Convertir filas en columnas

Muy bien, muchas gracias a ambos.

Etiquetas: campo, campos, columnas, filas, registros, tabla
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 19:02.