Separar resultado con comas en una consulta a sql

  • Autor Autor TaurusZDK
  • Fecha de inicio Fecha de inicio
T

TaurusZDK

Gamma
Programador
hola lo que quiero es separar resultados por comas. mme explico tengo una tabla la cual tiene una columna donde almacena valores y los separa con comas asi

1, 2, 3, 4, y asi sige

lo que quiero es que al hacer la cunsulta a esa columna dividir los valores es decir optener todos pero separados e.e nose si me allan entendido vien lo que quiero hacer con eso es que al hacer esa consulta con esos valores hacer otra consulta para llamar otra info diferente a otra tabla x que esos valores representan a otra tabla la cual son los identificadores..

gracias de ante mano.... saludos
 
La funcion implode te puede ayudar. Pero no serie mejor que realizaras un procedimiento almacenado o funcion dentro de tu base de datos?
PHP: implode - Manual

Deja tus consultas para ver mas a detalle.
 
La funcion implode te puede ayudar. Pero no serie mejor que realizaras un procedimiento almacenado o funcion dentro de tu base de datos?
PHP: implode - Manual

Deja tus consultas para ver mas a detalle.
De hecho sería al revés, con explode.

Ejemplo

$variable = explode(",",$datos);

Donde obviamente $datos tiene los números separados por coma. Para acceder a cada dato separado se hace como arreglo siendo $variable[0] el primer número y así sucesivamente.
 
aver si entendi yo tengo este codigo con el que ago la consulta

PHP:
   $query = $db->query("SELECT friends_id FROM users ORDER BY friends_id DESC LIMIT 20");     
    while($row = $db->fetch_array($query))
    {
	   $friends_id = $row["friends_id"];
    }

y con lo que me dijeron seria algo asi?

PHP:
   $query = $db->query("SELECT friends_id FROM users ORDER BY friends_id DESC LIMIT 20");     
    while($row = $db->fetch_array($query))
    {
	   $friends_id = $row["friends_id"];

           $array_friends = explode(",",$friends_id);
    }

y lo que quiero hacer es generar otra consulta a sql asi

PHP:
   $query = $db->query("SELECT user_id, avatar, username FROM users WHERE user_id ' $array_friends '  ORDER BY user_id DESC LIMIT 20");     
    while($result = $db->fetch_array($query))
    {
	   $user_id = $result["user_id"];
	   $avatar = $result["avatar"];
	   $username = $result["username"];

    }

asi creen que sirba?

lo que tengo es una columna en la tabla de usuarios llamada friends donde se almacenan los id de sus amigos y quiero recoger los datos de esa columna y generar otra consulta para mostrar la lista de amigos de un usuario
 
Mas o menos quedaria asi

PHP:
$query = $db->query("SELECT friends_id FROM users ORDER BY friends_id DESC LIMIT 20");     
    while($row = $db->fetch_array($query))
    {
       $friends_id = $row["friends_id"];

           $array_friends = explode(",",$friends_id);
           $longitud = count($array_friends);

           for($i=0; $i<$longitud; $i++)
      {

      $idabuscar=trim($array_friends[$i]);
      
      $query = $db->query("SELECT user_id, avatar, username FROM users WHERE user_id= '$idabuscar'  ORDER BY user_id DESC LIMIT 20");     
    while($result = $db->fetch_array($query))
    {
       $user_id = $result["user_id"];
       $avatar = $result["avatar"];
       $username = $result["username"];

    }//while2  

     }//for
    } //while

Saludos
 
Quieres buscar todos los registros que se encuentren entre esos id's (los que estan separados por coma)?

Si es asi, podrias usar algo como (sin siquiera tener que separarlos):

PHP:
$sql = 'SELECT user_id, avatar, username FROM users WHERE user_id IN (' . $array_friends . ') ORDER BY user_id DESC LIMIT 20;';

Saludos.
 
por que no creas una tabla (amigos) con id_usuario y id_amigo

Insertar CODE, HTML o PHP:
CREATE TABLE seguidores
(
	id_usuario int,
	id_amigo int
);

para cuando vallas agregar alguien como amigo haces:

Insertar CODE, HTML o PHP:
"INSERT INTO amigos(id_usuario, id_amigo) VALUES (1, 2)"

y para selecionar tus amigos:

Insertar CODE, HTML o PHP:
"SELECT * FROM amigos WHERE id_usuario = 1 ";

todo esto suponiendo que el id de tu usuario es el 1
 
Mas o menos quedaria asi

PHP:
$query = $db->query("SELECT friends_id FROM users ORDER BY friends_id DESC LIMIT 20");     
    while($row = $db->fetch_array($query))
    {
       $friends_id = $row["friends_id"];

           $array_friends = explode(",",$friends_id);
           $longitud = count($array_friends);

           for($i=0; $i<$longitud; $i++)
      {

      $idabuscar=trim($array_friends[$i]);
      
      $query = $db->query("SELECT user_id, avatar, username FROM users WHERE user_id= '$idabuscar'  ORDER BY user_id DESC LIMIT 20");     
    while($result = $db->fetch_array($query))
    {
       $user_id = $result["user_id"];
       $avatar = $result["avatar"];
       $username = $result["username"];

    }//while2  

     }//for
    } //while

Saludos

valla!!! que chulo me sirbio gracias!!! estupendo te deje un +1 o como se llama gracias!!!

igual los que los demas me dejaron tambien se agradece mucho tmb les dejare un +1 a todos 😉

- - - Actualizado - - -

otra pregunta.... y si quisiera saber el numero total? es decir cuantos caracteres ay?
 
valla!!! que chulo me sirbio gracias!!! estupendo te deje un +1 o como se llama gracias!!!

igual los que los demas me dejaron tambien se agradece mucho tmb les dejare un +1 a todos 😉

- - - Actualizado - - -

otra pregunta.... y si quisiera saber el numero total? es decir cuantos caracteres ay?

No te entiendo bien, pero si quieres saber la cantidad en $row["friends_id"] es la variable $longitud .

Saludos
 

Temas similares

Atrás
Arriba