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

[SOLUCIONADO] Duda como realizar una consulta (select)

Estas en el tema de Duda como realizar una consulta (select) en el foro de Mysql en Foros del Web. Buenas Tardes comunidad.. Tengo dos tablas, una llamada panel que esta tiene los datos personales y generales de una persona (campos: identidad, nombre, apellido, numero_celular). ...
  #1 (permalink)  
Antiguo 09/05/2013, 14:55
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Duda como realizar una consulta (select)

Buenas Tardes comunidad..

Tengo dos tablas, una llamada panel que esta tiene los datos personales y generales de una persona (campos: identidad, nombre, apellido, numero_celular).
Otra que se llama celular_panel, esta guarda los diferentes tipos de celular que tiene el panel. (campos: identidad, marca_celular)

Lo que me gustaria es que en mi select cuando este se imprima sea algo así.

identidad | nombre | apellido | numero_celular ! marca_celular | marca_celular |

Y las marca_celular vayan en columnas dependiendo de la cantidad de marcas de celular que tengo en la tabla celular_panel.. La verdad no tengo la menor idea si eso se puede realizar.

Graciaaaaaas de anticipado. De verdad gradecere mucho de su ayuda.
  #2 (permalink)  
Antiguo 09/05/2013, 15:20
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Duda como realizar una consulta (select)

Si las tablas tienen un campo que las una y que defina una relacion entre ambas claro que se puede...

¿Tienes relacionadas las tablas?
  #3 (permalink)  
Antiguo 09/05/2013, 15:21
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Duda como realizar una consulta (select)

Pues es la identidad la que tiene como relación. Como seria el select?? Que en eso estoy perdida.
  #4 (permalink)  
Antiguo 09/05/2013, 15:26
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Duda como realizar una consulta (select)

Hola steffyn_90:

Podrías utilizar la función GROUP_CONCAT para generar una nueva columna con una lista de todas las marcas asociadas separadas por comas, es decir, algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM persona;
  2. +-----------+--------+----------+----------------+
  3. | identidad | nombre | apellido | numero_celular |
  4. +-----------+--------+----------+----------------+
  5. |         1 | uno    | one      | 123-456        |
  6. |         2 | dos    | two      | 987-765        |
  7. +-----------+--------+----------+----------------+
  8. 2 rows in set (0.00 sec)
  9.  
  10. mysql> SELECT * FROM celular_panel;
  11. +-----------+---------------+
  12. | identidad | marca_celular |
  13. +-----------+---------------+
  14. |         1 | LG            |
  15. |         1 | Motorola      |
  16. |         2 | Nokia         |
  17. |         2 | Samsung       |
  18. +-----------+---------------+
  19. 4 rows in set (0.00 sec)
  20.  
  21. mysql> SELECT P.*, GROUP_CONCAT(marca_celular) marcas
  22.     -> FROM persona P
  23.     -> INNER JOIN celular_panel C ON C.identidad = P.identidad
  24.     -> GROUP BY identidad;
  25. +-----------+--------+----------+----------------+---------------+
  26. | identidad | nombre | apellido | numero_celular | marcas        |
  27. +-----------+--------+----------+----------------+---------------+
  28. |         1 | uno    | one      | 123-456        | LG,Motorola   |
  29. |         2 | dos    | two      | 987-765        | Nokia,Samsung |
  30. +-----------+--------+----------+----------------+---------------+
  31. 2 rows in set (0.00 sec)

Si necesitas tenerlos como columnas separadas, será un poco más complicado, pues supongo que no todas las personas tendrán el mismo numero de marcas asociadas, podrías agregar un índice a tu tabla más o menos así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM celular_panel;
  2. +-----------+-------------+---------------+
  3. | identidad | num_celular | marca_celular |
  4. +-----------+-------------+---------------+
  5. |         1 |           1 | LG            |
  6. |         1 |           2 | Motorola      |
  7. |         2 |           1 | Nokia         |
  8. |         2 |           2 | Samsung       |
  9. +-----------+-------------+---------------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT P.*,
  13.     -> MAX(IF(num_celular = 1, marca_celular, NULL)) marcas1,
  14.     -> MAX(IF(num_celular = 2, marca_celular, NULL)) marcas2
  15.     -> FROM persona P
  16.     -> INNER JOIN celular_panel C ON C.identidad = P.identidad
  17.     -> GROUP BY identidad;
  18. +-----------+--------+----------+----------------+---------+----------+
  19. | identidad | nombre | apellido | numero_celular | marcas1 | marcas2  |
  20. +-----------+--------+----------+----------------+---------+----------+
  21. |         1 | uno    | one      | 123-456        | LG      | Motorola |
  22. |         2 | dos    | two      | 987-765        | Nokia   | Samsung  |
  23. +-----------+--------+----------+----------------+---------+----------+
  24. 2 rows in set (0.00 sec)

Tendrías que agregar tantos MAX-IF con el número máximo de teléfonos que tenga una persona. Dale un vistazo y nos comentas.

Saludos
Leo.
  #5 (permalink)  
Antiguo 09/05/2013, 15:28
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Duda como realizar una consulta (select)

Prueba esto

select a.identidad, nombre, apellido, numero_celular, marca_celular, marca_celular from panel a inner join celular_panel b on a.identidad=b.identidad
  #6 (permalink)  
Antiguo 09/05/2013, 15:55
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Duda como realizar una consulta (select)

wooooooooooooooooooooooooow.... leonardo_josue, Muchisisisisisisisisisisisisisisissisisisisisisiss isisisisisimas gracias.Soy feliz aunque sea que se pongan en la misma columna.

Me sirvio de mucho, enserio muchisismas gracias.

Etiquetas: campo, select, 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 18:05.