[PHP/MySQL] Unir resultados
-
Hola Gente
tanto tiempo.. hace mucho que no me pasaba por aca.. bueno como veran no avance mucho en el tema, sigo siendo el mismo desastre de siempre
La cuestion es la siguiente, y estoy bien fresquito en el tema porque no busque nada.. (no porque no quise.. sino porque es bastante complejo de explicar como para con un par de palabras saber de que hablo..)
Tengo la siguiente tabla saludo_personas:El tema es que necesito hacer un bucle con el saludo y la intro de cada persona..Código:id campo valor idpersona 1 saludo Hola 1 2 intro Como va? 1 3 saludo Buenas 2 4 intro Todo bien? 2 5 saludo Buen dia, 3 6 intro Como estas? 3
No estoy acostumbrado a usar las tablas de esta manera, pero el sistema ya esta y no voy a modificar todo por este detallito..
Tienen alguna sugerencia de como hacerlo?
Muchas gracias -
¿Cómo precisás sacarlos datos del Mysql? Me refiero a que, por ejemplo, podés hacer:
Y después en tu bucle vas mostrando los resultados. No entiendo qué es lo que no entendés :-PCódigo:SELECT campo, valor, idpersona FROM saludo_personas
¿Cómo necesitás que sea la salida?
Nos vemos. -
si el saludo para esa persona es siempre el mismo, podes incluso agregar agregar esos 2 campos, saludo e intro a la misma tabla de usuarios, y los tomas directamente de ahi.
si lo queres hacer en una tabla a parte tomando de referencia el usuario ID y que contenga esa data, podes hacer incluso un while con un order by RAND y si tenes cargados distintos saludos, que le muestre a cada ingreso, uno distinto. -
Hola muchachos gracias por las respuestas...
Basicamente la salida que quiero seria,En realidad, no es nada que ver, traje este ejemplo de tabla porque era sencillo, el uso que se le da es otro pero lo que necesito es aplicable digamos..Código:Persona: 1 Hola, Como va? -- Persona: 2 Buenas, Todo bien? -- Persona: 3 Buen dia, Como estas?
Si la tabla saludo_personas hubiese sido
idpersona ------- saludo ----------- intro
Con algo como esto andariamos..Que supongo es lo que el_mesias se referia, modificar la estructura de la tabla..Código:$query = "SELECT * FROM saludo_personas"; $resultado = mysql_query($query); while ($row = @mysql_fetch_assoc($resultado)) { $id = $row["idpersona"]; $saludo = $row["saludo"]; $intro = $row["intro"]; echo "Persona: $id
"; echo "$saludo , $intro"; }
Esa fue mi primer idea, pero es bastante mas complicado hacer eso, que (supongo yo) lo que estoy necesitando..
Con lo que Lukillas puso, la verdad no tengo ni la menor idea de como conseguir esa salida..
No se como manejar el resultado de la query..
Si me quieren tirar un flotador por esos lados.. les agradezco..
Bueno muchachos, espero no haberlos desorientado mas..
Saludos y gracias! -
Las 2 soluciones más sencillas son las que te dije, o bien agregas campos a la tabla, o haces una externa con los saludos, con el código que vos pusiste, solo que le falta "where usuario_id=$_SESSION[id]" o como sea que traigas el ID del usuario logueado.
No le veo lo complejo a agregarle campos a la db man, las agregas de phpmyadmin y no te afecta en nada al funcionamiento actual, al igual que creando una tabla nueva. -
Gracias por la respuesta..
Crear una tabla es sencillo, modificar la actual tambien. El tema es como se guardan los datos en las tablas. La estructura que traje al post es creada y utilizada por un cms al cual le quiero agregar una funcion mas, para la que requiero conseguir una impresion de ese tipo.
No son usuarios, ni saludos. Son caracteristicas de un inmueble, que por como esta seteado el cms, se muestran siempre iguales en cuanto a los campos, obviamente los valores se modifican segun el inmueble.
Lo que necesito es conseguir un listado de todos los inmuebles, con caracteristicas puntuales, aca ejemplificadas como "saludo" e "intro".
Especificamente lo que me hace falta es poder recolectar lo ejemplificado como "Hola" y "Como va?" de cada ID.
Me parece que de tanto explicar la embarre jaja.. espero quede mas claro..
Muchas gracias por las respuestas
Saludos -
Mmm, entonces probemos algo.
Me armé una réplica de la tabla que pusiste como ejemplo en tu primer post:Y después esta query:Código:mysql> select * from saludo_personas; +----+--------+-------------+-----------+ | id | campo | valor | idpersona | +----+--------+-------------+-----------+ | 1 | saludo | Hola | 1 | | 2 | intro | Como va? | 1 | | 3 | saludo | Buenas | 2 | | 4 | intro | Todo bien? | 2 | | 5 | saludo | Buen dia, | 3 | | 6 | intro | Como estas? | 3 | +----+--------+-------------+-----------+ 6 rows in set (0.01 sec)
Espero que te sirva! Fijate que en la query mediante el indicador SEPARATOR, definís qué es lo que se utilice para "juntar" los campos.Código:mysql> SELECT idpersona, GROUP_CONCAT(valor SEPARATOR ' ') AS saludo FROM saludo_personas GROUP BY idpersona; +-----------+-----------------------+ | idpersona | saludo | +-----------+-----------------------+ | 1 | Hola Como va? | | 2 | Buenas Todo bien? | | 3 | Buen dia, Como estas? | +-----------+-----------------------+ 3 rows in set (0.00 sec)
Si ponés ', ' te queda:Y ya te traés todo el resultset que podés recorrer fácilmente usando mysql_fetch_array() o mysql_fetch_assoc() e ir mostrando los resultados para cada idpersona.Código:mysql> SELECT idpersona, GROUP_CONCAT(valor SEPARATOR ', ') AS saludo FROM saludo_personas GROUP BY idpersona; +-----------+------------------------+ | idpersona | saludo | +-----------+------------------------+ | 1 | Hola, Como va? | | 2 | Buenas, Todo bien? | | 3 | Buen dia,, Como estas? | +-----------+------------------------+ 3 rows in set (0.00 sec)
Nos vemos. -
Muchas gracias Lukillas, no conocia la funcion group concat
Estuve dando vueltas por algunos manuales y no logro encontrar la manera de concatenar los valores de saludo e intro unicamente.. en el ejemplo no figura, pero hay varios items mas en la columna campo.
Se puede elegir que concatenar con esta funcion¿?
Saludos y de nuevo gracias
