ayuda sentencia SQL

Iniciado por soru13, 16 Junio 2012, 17:06 PM

0 Miembros y 1 Visitante están viendo este tema.

soru13

hola,estoy realizando un buscador para mi página, y tengo un problema al realizar la consulta, es la siguiente:

Código (php) [Seleccionar]
$resultados = mysql_query("SELECT * FROM anuncios WHERE
edad BETWEEN '".$edad1."' AND '".$edad2."'
AND tarifa1 <= '".$tarifa1."'
AND (tarifa4 >= '".$tarifa2."'
OR tarifa3 >= '".$tarifa2."'
OR tarifa2 >= '".$tarifa2."')
AND clientes = '".$realizado."'
AND sexo = '".$sexoanuncio."'
AND provincia = '".$ciudad."'
");


el caso es que tengo un campo en la tabla que se llama "masajes", entonces al crear el anuncio crea una cadena que lo inserta en este campo en plan "masaje1masaje2masaje3". Lo que yo hice fue

Código (php) [Seleccionar]
$resultados = mysql_query("SELECT * FROM anuncios WHERE
edad BETWEEN '".$edad1."' AND '".$edad2."'
AND tarifa1 <= '".$tarifa1."'
AND (tarifa4 >= '".$tarifa2."'
OR tarifa3 >= '".$tarifa2."'
OR tarifa2 >= '".$tarifa2."')
AND clientes = '".$realizado."'
AND sexo = '".$sexoanuncio."'
AND provincia = '".$ciudad."'
                AND masajes LIKE '%".$masaje[1]."%'
                AND masajes LIKE '%".$masaje[2]."%'
                AND masajes LIKE '%".$masaje[3]."%'
                AND masajes LIKE '%".$masaje[4]."%'
                AND masajes LIKE '%".$masaje[5]."%'
                AND masajes LIKE '%".$masaje[6]."%'
                AND masajes LIKE '%".$masaje[7]."%'
");


Pero el problema es que me muestra cualquier consulta que tenga el contenido del "masaje[1]", o del "masaje[2]", y así sucesivamente. Y lo que necesito es que me saque la consulta de la cual el campo "masajes" tenga el contenido de "masaje[1]" y "masaje[2]" por ejemplo.

¿Cómo podría hacerlo? Se me han acbado las ideas.

Gracias y un saludo

GuzmanG

Buenas como andas?

A ver si estoy entendiendo bien...
Vos tenes un campo en la base "masajes" que adentro tiene una concatenación de masajes, y despues queres encontrar las tuplas que cumplen con ciertos masajes (todos los que le pases a la vez)?

Los nombres de los masajes son totalmente diferentes o un nombre puede estar dentro de otro? Es decir existen nombres de masajes que sean "AB" y otro "ABBBBB"?
En ese caso si estas buscando a los %AB% y no a los %ABBBBB% te puede dar resultados que no estas esperando.
Si esto no puede pasar, es raro que no te funcione la consulta que pusiste.


Cualquier cosa avisa o pone algun ejemplo de que tipo de datos son los masajes a ver si sale.
Saludos,


soru13

hola, como bien dices en el campo de la tabla se encuentra una concatenación de masajes, por ejemplo:

"chinomanospies"

pero el orden puede variar dependiendo del anuncio,por ejemplo:

"manoschinopies"

y necesito hacer la consulta para que me muestre el anuncio cuando dentro del campo aparezca una cadena igual a la que busco, es decir:

masajes LIKE '%manos%'

pero que a la vez también sea "chino" y "pies", y ya si no tiene esa concatenación, pues me muestre el anuncio si contiene alguna de esas.

¿Me entiendes?


GuzmanG

Que raro entonces.

Si existieran los datos:
ACU
ACB

La consulta:

select *
from anuncios
where masajes like '%A%'
and masajes like '%B%'

Debería devolverte unicamente ACB, por lo que tu consulta a mi entender estaría bien. Probaste sacar la consulta del código PHP y ejecutarla directo en el manejador? Intenta acortarla, proba primero con consultas similar a la que puse, solo filtrando por el campo "mensajes" y ves si te esta devolviendo lo esperado. Luego anda agregandole los otros filtros a ver que pasa.