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

Consultar SET en columna SET

Estas en el tema de Consultar SET en columna SET en el foro de Mysql en Foros del Web. Hola amigos! Tengo una tabla con un campo tipo SET que guarda una lista de números enteros (ej: 2,7,5,6,4,10). Normalmente una consulta para ese campo ...
  #1 (permalink)  
Antiguo 16/01/2012, 15:37
 
Fecha de Ingreso: enero-2010
Mensajes: 5
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta Consultar SET en columna SET

Hola amigos!

Tengo una tabla con un campo tipo SET que guarda una lista de números enteros (ej: 2,7,5,6,4,10). Normalmente una consulta para ese campo implica usar la funcion FIND_IN_SET, pero el problema es que esa funcion solo sirve para averigüar la existencia de un SOLO valor dentro del conjunto.

Yo necesito alguna forma de averigüar la existencia de VARIOS valores en el conjunto. Por ejemplo, consultar si (1,4,5) está en el conjunto (0,6,5,7,13,4,8,5). El orden no me importa. Creo que se puede hacer con REGEXP o LIKE, o con un bucle en mysql, pero no se la manera.

Por favor, alguien podria ayudarme?
  #2 (permalink)  
Antiguo 16/01/2012, 19:51
 
Fecha de Ingreso: junio-2008
Mensajes: 122
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Consultar SET en columna SET

Proba con SELECT * from tabla where campo IN (1,4,5)

Aunque me parece que vas a tener mennos problemas si lo haces con PHP
Saludos...
  #3 (permalink)  
Antiguo 17/01/2012, 09:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consultar SET en columna SET

Cita:
Iniciado por damvaz Ver Mensaje
Hola amigos!

Tengo una tabla con un campo tipo SET que guarda una lista de números enteros (ej: 2,7,5,6,4,10). Normalmente una consulta para ese campo implica usar la funcion FIND_IN_SET, pero el problema es que esa funcion solo sirve para averigüar la existencia de un SOLO valor dentro del conjunto.

Yo necesito alguna forma de averigüar la existencia de VARIOS valores en el conjunto. Por ejemplo, consultar si (1,4,5) está en el conjunto (0,6,5,7,13,4,8,5). El orden no me importa. Creo que se puede hacer con REGEXP o LIKE, o con un bucle en mysql, pero no se la manera.

Por favor, alguien podria ayudarme?
El problema es que desde el vamos estás trabajando mal. Creaste un campo multivaluado y eso no se debe hacer.
Si tienes N valores asignables a un campo, tienes una cardinalidad 1:N entre una entidad y un valor, por lo cual debes crear otra tabla que contenga un registro por cada valor posible.
Cualquier otra slución no sólo no respeta el modelo entidad-relación, sino que además hace que las consultas se vuelvan imposibles o extremadamente complicadas, como en tu caso.
Una de dos: O corriges el defecto que has creado, o realizas tu solución por medio de PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 17/01/2012, 11:10
Avatar de totobycrg  
Fecha de Ingreso: enero-2012
Ubicación: México D.F.
Mensajes: 27
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Consultar SET en columna SET

haz probado una consulta sobre el campo así?? para que ignore que es una palabra reservada?
y no me refiero a '' comillas simples si no las otras ``

`SET`
  #5 (permalink)  
Antiguo 17/01/2012, 11:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consultar SET en columna SET

Cita:
Iniciado por totobycrg Ver Mensaje
haz probado una consulta sobre el campo así?? para que ignore que es una palabra reservada?
y no me refiero a '' comillas simples si no las otras ``

`SET`
El SET al que se refiere es el tipo de columna, no el nombre de la columna.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 17/01/2012, 11:19
Avatar de totobycrg  
Fecha de Ingreso: enero-2012
Ubicación: México D.F.
Mensajes: 27
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Consultar SET en columna SET

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El SET al que se refiere es el tipo de columna, no el nombre de la columna.
cierto sry xD, bueno como tu dices lo más correcto sería corregir el modelo de su DB
  #7 (permalink)  
Antiguo 18/01/2012, 10:13
 
Fecha de Ingreso: enero-2010
Mensajes: 5
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Consultar SET en columna SET

Cita:
Si tienes N valores asignables a un campo, tienes una cardinalidad 1:N entre una entidad y un valor, por lo cual debes crear otra tabla que contenga un registro por cada valor posible.
Gracias gnzsoloyo!

Conozco el modelo entidad-relacion. En realidad queria minimizar el codigo PHP lo mas que se pueda, por cuestiones de rendimiento.

Me inclino por una tabla auxiliar que guarde los datos relacionados. Creo que para el rendimiento es mejor.

Nuevamente, muchas gracias.

Etiquetas: columna, consultar, set, sql, tabla
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 12:06.