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

Una alternativa a "like"??

Estas en el tema de Una alternativa a "like"?? en el foro de Mysql en Foros del Web. Saludos, actualmente tengo una tabla (digamos tabla 1, no creo que el nombre sea relevante) que guarda diferentes campos, pero uno de ellos debe guardar ...
  #1 (permalink)  
Antiguo 03/11/2007, 08:36
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
Pregunta Una alternativa a "like"??

Saludos,

actualmente tengo una tabla (digamos tabla 1, no creo que el nombre sea relevante) que guarda diferentes campos, pero uno de ellos debe guardar varias relaciones a la vez, me explico, tengo un campo asi:

idGenero varchar(250), donde guardo guardo los registros de la siguiente forma:

'1,3,5,6,7,8' , entonces, tengo otra tabla llamada genero, que tiene algo asi:

idGenero genero
1 primero
2 segundo
3 tercero
4 cuarto
5 quinto
6 sexto

entonces, a la hora de desplegar esos datos, lo que hago es que hago:

select idGenero from tabla 1 y luego en php quito todas las comas y meto todos los generos en un array y asi sucesivamente... no se si me estoy explicando bien


Bueno, al punto, mi problemita esta en que he puesto un buscador, que busca por ese mismo campo, es decir, tengo algo asi:

(suponiendo que estan buscando el genero 1)

SELECT * FROM tabla 1 WHERE (idGenero LIKE '%1%' OR idGenero LIKE '%1,%' OR idGenero LIKE '%,1%' OR idGenero LIKE '%,1,%') OR idGenero = '1'

si me estan entendiendo se imaginaran que hago todos esos OR en el WHERE para saber si el genero que buscan esta al principio, en el centro o al final del campo.

Pero mi problema es que cuando hago eso, si algun registro tiene algo asi:

'3,15,21,4,8' y estoy buscando el numero 1, me sale ese registro, por el asunto del ',1' y del '1,' espero que me hayan entendido. Algun consejo por favor?

Gracias de antemano
__________________
http://www.ingenierosinc.com
  #2 (permalink)  
Antiguo 04/11/2007, 03:59
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: Una alternativa a "like"??

Como estas trabajando con php, te recomiendo que veas esto:

consulta sql array
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 04/11/2007, 09:29
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
Re: Una alternativa a "like"??

Un millon de gracias, he visto y el post y parece mucho a lo que quiero hacer, ahora hare la prueba y les dejare saber si funciona bien, mil gracias
__________________
http://www.ingenierosinc.com
  #4 (permalink)  
Antiguo 04/11/2007, 09:37
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
Re: Una alternativa a "like"??

Pues acabo de hacer una prueba y no creo que vaya a funcionarme :( la prueba que hice fue la siguiente:

SELECT * FROM tabla 1 WHERE idGenero IN(13)

en tabla 1 tengo tres registros, que en idGenero tienen esto:

registro idGenero
1 13,21
2 7,13
3 21, 13

pero cuando hago el IN solo me devuelve el registro 1, es decir el que comienza con 13, igual si cambio el 13 y pongo un 7, solo me devuelve el 2 y si pongo 21 solo me devuelve el 3

intente con cosas como
SELECT * FROM tabla 1 WHERE idGenero IN (13,13,',13') pero nada..

acaso estoy usando mal el IN?
__________________
http://www.ingenierosinc.com
  #5 (permalink)  
Antiguo 04/11/2007, 12:39
 
Fecha de Ingreso: noviembre-2002
Ubicación: http://localhost/
Mensajes: 195
Antigüedad: 21 años, 5 meses
Puntos: 1
Re: Una alternativa a "like"??

Excelente, ya logre hacerlo!! :D

En lugar de usar IN como en el ejemplo, use Regular Expresion, aqui pongo el resultado por si a alguien le sirve:

SELECT * FROM tabla 1 WHERE idGenero REGEXP '[[:<:]]1[[:>:]]'

donde 1 sera el valor que estan buscando, probe con estos registros y funciono de maravilla:

registro | idGenero
1 | 13,21
2 | 7,1
3 | 21, 13

puse el 1 como indique y no me trajo ninguno de los 21, sino solo el que tiene 1 :)

Gracias por la ayuda de todas formas
__________________
http://www.ingenierosinc.com
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 08:25.