[PHP/MySQL] Unir resultados
123 Último

[PHP/MySQL] Unir resultados

      • 2,797
      • mensajes
      • miembro desde
      • 11/02/07
    #1 [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:

    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
    El tema es que necesito hacer un bucle con el saludo y la intro de cada persona..

    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
  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    22 comentarios / 6753 Visitas

      • 17,272
      • mensajes
      • miembro desde
      • 09/09/05
    • Ars longa, vita brevis
    • Administrador
    18/01/2011
    #2 Re: [PHP/MySQL] Unir resultados

    ¿Cómo precisás sacarlos datos del Mysql? Me refiero a que, por ejemplo, podés hacer:

    Código:
    SELECT campo, valor, idpersona FROM saludo_personas
    Y después en tu bucle vas mostrando los resultados. No entiendo qué es lo que no entendés :-P

    ¿Cómo necesitás que sea la salida?

    Nos vemos.
      • 346
      • mensajes
      • miembro desde
      • 25/10/04
    18/01/2011
    #3 Re: [PHP/MySQL] Unir resultados

    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.

      • 2,797
      • mensajes
      • miembro desde
      • 11/02/07
    18/01/2011
    #4 Re: [PHP/MySQL] Unir resultados

    Hola muchachos gracias por las respuestas...

    Basicamente la salida que quiero seria,

    Código:
    Persona: 1
    Hola, Como va?
    --
    Persona: 2
    Buenas, Todo bien?
    --
    Persona: 3
    Buen dia, Como estas?
    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..

    Si la tabla saludo_personas hubiese sido
    idpersona ------- saludo ----------- intro

    Con algo como esto andariamos..
    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"; }
    Que supongo es lo que el_mesias se referia, modificar la estructura de la tabla..
    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!
      • 346
      • mensajes
      • miembro desde
      • 25/10/04
    18/01/2011
    #5 Re: [PHP/MySQL] Unir resultados

    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.

      • 2,797
      • mensajes
      • miembro desde
      • 11/02/07
    18/01/2011
    #6 Re: [PHP/MySQL] Unir resultados

    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

      • 17,272
      • mensajes
      • miembro desde
      • 09/09/05
    • Ars longa, vita brevis
    • Administrador
    18/01/2011
    #7 Re: [PHP/MySQL] Unir resultados

    Mmm, entonces probemos algo.

    Me armé una réplica de la tabla que pusiste como ejemplo en tu primer post:

    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)
    Y después esta query:

    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)
    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.

    Si ponés ', ' te queda:

    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)
    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.


    Nos vemos.
      • 2,797
      • mensajes
      • miembro desde
      • 11/02/07
    18/01/2011
    #8 Re: [PHP/MySQL] Unir resultados

    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

      • 17,272
      • mensajes
      • miembro desde
      • 09/09/05
    • Ars longa, vita brevis
    • Administrador
    19/01/2011
    #9 Re: [PHP/MySQL] Unir resultados

    Si no es mucho problema, poné un ejemplo más acorde con la realidad, a ver cómo modificamos la query

    Nos vemos.

      • 346
      • mensajes
      • miembro desde
      • 25/10/04
    19/01/2011
    #10 Re: [PHP/MySQL] Unir resultados

    No te vamos a robar ninguna idea, pero mucho menos poder ayudarte si los ejemplos no son basados en el problema real

123 Último