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

Hacer una consulta

Estas en el tema de Hacer una consulta en el foro de Mysql en Foros del Web. hola tengo una base de datos como aparece arriva y quiero que al hacer una consulta me aparesca como esta en la tabla. he checado ...
  #1 (permalink)  
Antiguo 28/06/2013, 12:42
 
Fecha de Ingreso: junio-2013
Mensajes: 68
Antigüedad: 10 años, 9 meses
Puntos: 1
Pregunta Hacer una consulta

hola tengo una base de datos como aparece arriva y quiero que al hacer una consulta me aparesca como esta en la tabla.





he checado en el foro pero en las pruebas solo e podido buscar por medio del nombre pero me aparece en lista el nombre repetido con los dias y sus colores pero no e podido organizarlos en la tabla

Última edición por mroblesh06; 28/06/2013 a las 13:04
  #2 (permalink)  
Antiguo 28/06/2013, 13:18
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Hacer una consulta

Hola mroblesh06:

Antes que nada veo que es tu primer post, así es que bienvenido al foro...

Ahora, algunas recomendaciones... antes de publicar un post utiliza la herramienta de búsqueda del foro o pregúntale a SAN GOOGLE... el generalmente tiene las respuestas. Checa esta liga:

http://lmgtfy.com/?q=convertir+filas+a+columnas+mysql

Dos, si no encuentras nada que te sirva, postea entonces algo de lo que intentaste hacer, dinos qué problemas tienes y así será más fácil tratar de ayudarte... en tu post dices que checaste en el foto pero no incluyes el código que intentaste hacer, de tal manera que es imposible saber qué estás haciendo mal...

La consulta en realidad es bastante común... puedes resolverla de muchas maneras, una de ellas es haciendo agrupaciones condicionales, es decir, algo como esto:

Código MySQL:
Ver original
  1. nombre,
  2. MAX(IF(dia = 'lunes', color, NULL)) lunes,
  3. ...
  4. ...
  5. ...

Agrupando por el nombre de la persona y agregando una condición por cada uno de los días que aparecen en tu tabla... checa algunos de los ejemplos y si continuas con dudas postea lo que hiciste y con gusto te ayudamos a resolver la consulta

Saludos
Leo.
  #3 (permalink)  
Antiguo 28/06/2013, 13:35
 
Fecha de Ingreso: junio-2013
Mensajes: 68
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Hacer una consulta

asi es es mi primer post y para hacer sincero tambien soy nuevo en mysql, y estaba practicando pero, al hacer las busquedas en google buscaba mal, jaja una disculpa entonces si entendi quedaria algo asi.

Código HTML:
SELECT 
nombre, 
MAX(IF(dia = 'lunes', color, NULL)) lunes,
MAX(IF(dia = 'martes', color, NULL)) martes,
MAX(IF(dia = 'miercoles', color, NULL)) miercoles,
MAX(IF(dia = 'jueves', color, NULL)) jueves,
MAX(IF(dia = 'viernes', color, NULL)) viernes,
FROM `dias y colores`
  #4 (permalink)  
Antiguo 28/06/2013, 13:46
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Hacer una consulta

Si no haces la agrupación por nombre sólo te va a mostrar un registro...

Ojo con eso.

Saludos
Leo.
  #5 (permalink)  
Antiguo 28/06/2013, 13:56
 
Fecha de Ingreso: junio-2013
Mensajes: 68
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Hacer una consulta

gracias leo pero no entiendo como la agrupación por nombre

pongo el que estaba haciendo

Código HTML:
Ver original
  1. SELECT
  2. id, nombre,
  3. if(lunes=color,1,0) as ,lunes
  4. if(martes=color,1,0) as martes,
  5. if(miercoles=color,1,0) as miercoles,
  6. if(jueves=color,1,0) as jueves,
  7. if(viernes=color,1,0) as viernes,
  8. from `dias y colores` WHERE 1

pero me manda error en from `dias y colores`
  #6 (permalink)  
Antiguo 28/06/2013, 14:17
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: Hacer una consulta

Tienes una coma antes del FROM, como si hubiese una columna más que no has puesto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 28/06/2013, 14:35
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Hacer una consulta

Hola de nuevo mroblesh06:

Creo que el problema es que no tienes muchos conocimientos sobre SQL... te conviene darte una revisada a cualquier manual de SQL para principiantes. La función MAX() es una función de AGRUPACIÓN... aquí se realiza de manera un tanto "tramposa" pues en realidad no sirve para obtener un valor Máximo. estás funciones se usan por lo general con la cláusula GROUP BY, la cual sirve para AGRUPAR registros semejantes... observa este ejemplo.

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +--------+-------+
  3. | nombre | monto |
  4. +--------+-------+
  5. | juan   |    10 |
  6. | juan   |    20 |
  7. | miguel |    15 |
  8. | miguel |    20 |
  9. | juan   |    15 |
  10. +--------+-------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> SELECT nombre, SUM(monto) FROM tabla;
  14. +--------+------------+
  15. | nombre | SUM(monto) |
  16. +--------+------------+
  17. | juan   |         80 |
  18. +--------+------------+
  19. 1 row in set (0.00 sec)
  20.  
  21. mysql> SELECT nombre, SUM(monto) FROM tabla GROUP BY nombre;
  22. +--------+------------+
  23. | nombre | SUM(monto) |
  24. +--------+------------+
  25. | juan   |         45 |
  26. | miguel |         35 |
  27. +--------+------------+
  28. 2 rows in set (0.00 sec)

Observa que en la segunda consulta, si se omite el GROUP BY te regresa UN SOLO REGISTRO, independientemente de que estés haciendo referencia a dos nombres distintos, haciendo la suma de todos los registros... es eso a lo que me refiero con que tienes que agrupar. Y mucho ojo, si no utilizas una función de agrupación y pones solo el IF, en realidad sólo te va a colocar un registro y las demás columnas las va a poner con NULL

Saludos
Leo.
  #8 (permalink)  
Antiguo 28/06/2013, 16:08
 
Fecha de Ingreso: junio-2013
Mensajes: 68
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Hacer una consulta

si tengo que estudiar mucho jajaja, y ya entendi lo de agrupar gracias, ya estoy leyendo un manual, gracias gnzsoloyo ya quedo la consulta solo me manda los colores de toda la semana y agarra tambien los de los demas nombres.


Etiquetas: 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:47.