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

campo con valores separados por comas

Estas en el tema de campo con valores separados por comas en el foro de Mysql en Foros del Web. hola chic@s: Estoy tratando de hacer una consulta a un campo de una tabla q algunos de sus valores estan separados por comas...veran estoy lidiando ...
  #1 (permalink)  
Antiguo 03/11/2010, 13:28
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
campo con valores separados por comas

hola chic@s:

Estoy tratando de hacer una consulta a un campo de una tabla q algunos de sus valores estan separados por comas...veran estoy lidiando con dos tablas:

tabla 1: tb_solicitudes
campos: id_solicitud, fecha_entrada, id_tipo_problema, entre otros.
valores de ejemplo: (con una consulta sencilla de tipo select * from logro visualizar esto mismo)
+------------------------+
| 1 | 2010-11-03 | 1
| 2 | 2010-11-03 | 1,3
+------------------------+
tabla 2: tb_tipo_pro_especifico
campos: id_tipo_problema, nombre_problema.
valores de ejemplo:
+------------+
| 1 | Monitor
| 2 | Mouse
| 3 | Teclado
| 4 | CPU
+------------+
quiero poder visualizar algo asi:
+---------------------------------------------+
| 1 | 2010-11-03 | Monitor
| 2 | 2010-11-03 | Monitor, Teclado
+---------------------------------------------+
esta es la consulta q tengo hasta el momento, donde logro ver el primer valor antes de la coma pero el segundo valor ya no...

Código PHP:
$sql="SELECT tb_solicitudes.id_tipo_problema,  tb_tipo_pro_especifico.nombre_problema from tb_solicitudes, tb_tipo_pro_especifico where id_solicitud='$id_solicitud' AND tb_solicitudes.id_tipo_problema=tb_tipo_pro_especifico.id_tipo_problema";
$result=mysql_query($sql) or die ("No se pudo conectar a la BD ".mysql_error());
$fila=mysql_fetch_array($resultMYSQL_ASSOC);
$nombre_problema=$fila['nombre_problema']; 
Alguien podria decirme como hago para ver todos los valores???

Gracias
  #2 (permalink)  
Antiguo 03/11/2010, 14:26
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: campo con valores separados por comas

Comentario al paso: me llevo mucho tiempo aprender que no hay que usar campos que guarden valores separados por coma. Eso se llama "campos multivaluados". En realidad, hay que crear una tabla de relacion para almacenar esos valores...
  #3 (permalink)  
Antiguo 03/11/2010, 15:12
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: campo con valores separados por comas

Hola mayid, gracias x contestar, tienes razon...

Claro despues de plantearme esta pregunta me doy cuenta q eso es lo mas apropiado...pero estoy por terminar el sistema y ya tengo todas las consultas hechas y todo eso, y este fue un requerimiento final q me hicieron y si me pongo a cambiar la base me estare dando de topes en todo lo demas... mi unica solucion es escontrarle solucion de esta manera...

Estuve investigando y encontre la funcion explode... ya la implemente pero mi codigo resulto muy rebuscado, me gustaria poderle dar un poco de dinamismo algo asi como ir creando la consulta con un for o un while... mira este es mi code:

Código PHP:
<?PHP                           
//primero saco los id de la tabla solicitudes
$sql="SELECT id_tipo_pro_esp  from tb_solicitudes where no_sol='$no_sol'";
$result=mysql_query($sql) or die ("No se pudo conectar a la BD ".mysql_error());
$fila=mysql_fetch_array($resultMYSQL_ASSOC);
$id_tipo_pro_esp=$fila['id_tipo_pro_esp'];
//despues los convierto en vector
$vector explode(",",$id_tipo_pro_esp);
//y hago otra consulta condicionando individualmente respecto a la posicion del vector
//esta consulta es la q me gustaria automatizar ya q ahora solo muestro 2 valores pero hay campos con 3 o mas y la cosa seria poner otra union pero seria muy tedioso ya q serian entonces como 10 o mas si algun dia aumentan el catalogo
$sql_ser="(SELECT tipo_pro_esp from tb_tipo_pro_especifico where id_tipo_pro_esp='$vector[0]')UNION(SELECT tipo_pro_esp from tb_tipo_pro_especifico where id_tipo_pro_esp='$vector[1]')";
$resu=mysql_query($sql_ser) or die ("No se pudo conectar a la BD ".mysql_error());
echo 
"Problemas con ";
while(
$fil=mysql_fetch_array($resuMYSQL_ASSOC)){
   
$tipo_pro_esp $fil['tipo_pro_esp'];
   echo 
"$tipo_pro_esp ";
}                            
mysql_free_result($result);
mysql_free_result($resu);
?>
Mi resultado es algo asi:

Problemas con Monitor Teclado

Pero me gustaria trabajar mas la consulta y q las uniones se hicieran con un bucle o algo asi, en pocas palabras optimizar el codigo

y q si hay un solo dato que quede:

Problemas con Monitor

si hay dos o mas q dijera:

Problemas con Monitor y Teclado o al menos: Problemas con Monitor, Teclado

Alguna idea???

Gracias

Última edición por catpaw; 03/11/2010 a las 15:18

Etiquetas: comas, campos
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 03:38.