Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Una alternativa a "like"?? (http://www.forosdelweb.com/f86/alternativa-like-530393/)

White_Devi 03/11/2007 08:36

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

Marvin 04/11/2007 03:59

Re: Una alternativa a "like"??
 
Como estas trabajando con php, te recomiendo que veas esto:

consulta sql array

White_Devi 04/11/2007 09:29

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 :risa:

White_Devi 04/11/2007 09:37

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?

White_Devi 04/11/2007 12:39

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


La zona horaria es GMT -6. Ahora son las 05:22.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.