Foros del Web » Programando para Internet » PHP »

Cómo seleccionar registro aquí?

Estas en el tema de Cómo seleccionar registro aquí? en el foro de PHP en Foros del Web. Saludos a todos, tengo la sgte. consulta: Utilizo MySQL para esto. Uno de los campos de una tabla posee 1 o más valores separados por ...
  #1 (permalink)  
Antiguo 03/06/2004, 11:40
 
Fecha de Ingreso: enero-2004
Ubicación: Santiago
Mensajes: 127
Antigüedad: 20 años, 10 meses
Puntos: 0
Cómo seleccionar registro aquí?

Saludos a todos, tengo la sgte. consulta:

Utilizo MySQL para esto. Uno de los campos de una tabla posee 1 o más valores separados por coma (campo de tipo text), ¿Como puedo hacer un WHERE hacia cualquiera de estos elementos separados por coma?

Ejemplo:
Código PHP:
SELECT FROM tabla WHERE campo VALUES (2); 
pero resulta que campo, posee valores 1,2,3. Estaba pensando en algo parecido a la función in_array de PHP que para el caso no me sirve ya que me devuelve TRUE o FALSE unicamente, si me devolviera el valor de concordancia estaria solucionado el problema.

Ejemplo:
Código PHP:
$campo "1,2,3";
$array_campo explode(","$campo);

if (
in_array("2"$array_campo));
echo 
"Se encontró 2." 
Como decia, esto no me sirve ya que in_array me devuelve unicamente TRUE o FALSE, no el valor que encontró.


Espero puedan ayudarme, de antemano muchas gracias

Última edición por HiperJP; 03/06/2004 a las 11:42
  #2 (permalink)  
Antiguo 03/06/2004, 12:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Puedes hacer:

Código PHP:
$sql="SELECT * FROM tabla WHERE campo LIKE (%".$valor."%)"
Pero tal vez eso te dé problemas con por ejemplo: 11,21,312321 (si buscas "1" .. ).

Para estos casos .. sería ideal que pensases en "normalizar" mas tu Base de datos .. guardando esos valores en una tabla extra relacionada con esta que ya usas por su "ID" (identificador único) que uses.

Si no puedes hacer eso (que sería altamente recomendable por el rendimiento de tu própia aplicación) .. te va a tocar lo más probable a recorrer todos esos resultados y "via PHP" ir biendo si el registro en cuestión tiene tu resultado (con tu in_array() )

Código PHP:
$resultado=mysql_query("SELECT * FROM tabla");
while (
$registro=mysql_fetch_array($resultado)){
   
// convertir tu string en un array .. 
   
$array_campo implode(","$registro['campo']); 
   
// aplicar in_array() ...
   
if (in_array("2"$array_campo)); 
      echo 
"Se encontró 2. en: ".$registro['id_o_nombre_como_lo_identifiques']."<br>";
  }


Esta solución sin bien debe funcionar no es NADA optimo .. SI ya usas Base de datos .. usalas "bien" para eso .. en estos casos es necesario empezar a "normalizar" ...

Un saludo,
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 14:12.