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

Consulta WHERE MATCH AGAINST a dos campos

Estas en el tema de Consulta WHERE MATCH AGAINST a dos campos en el foro de Bases de Datos General en Foros del Web. Buenos dias, primero si no fuera por este foro y los parecidos ni sabria nada de php, sql ni me interes por ello hubiera surgido, ...
  #1 (permalink)  
Antiguo 23/05/2009, 04:44
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 8 meses
Puntos: 0
Consulta WHERE MATCH AGAINST a dos campos

Buenos dias, primero si no fuera por este foro y los parecidos ni sabria nada de php, sql ni me interes por ello hubiera surgido, gracias a los cracks y a lo no tan cracks que participais.

Lo segundo y para lo que escribo.
Tengo un problema al hacer una busqueda en la base de datos. Tengo los registros en la TABLA1, uso el metodo WHERE MATCH AGAINST y busco los registros que contengan la informacion ANIMAL, DOMESTICO en el CAMPO1 y la PEQUEÑO, BONITO en el CAMPO2.

Lo que tengo hasta ahora es lo siguiente:
FROM tabla1
WHERE MATCH(campo1) AGAINST ('ANIMAL, DOMESTICO' IN BOOLEAN MODE) AND MATCH(campo2) AGAINST ('PEQUEÑO, BONITO' IN BOOLEAN MODE)


Me esta funcionando a medias, me da los registros que contienen ANIMAL y DOMESTICO en el campo1, pero tambien me da los que contienes PEQUEÑO o BONITO en el campo2.

Lo que busco es que solo me de los registros que en el campo1 contiene ANIMAL y DOMESTICO (eso esta funcionando) y que en el campo2 contiene PEQUEÑO y BONITO (eso es lo que falla ya que tambien me da los registros que contiene solo BONITO o PEQUEÑO).


Voy a estar fuera unos dias, intentare consultar el foro para ver las respuestas aunque no lo podre probar hasta que vuelva. Aprobecho para otra duda que tengo, aunque sera para abrir un nuevo tema. Hay alguna forma de tener una consulta WHERE MATCH AGAINST y que me salgan todos los resultados sin tener que meter un criterio de busqueda, ahora con lo que tengo si no le doy un valor no me muestra nada.

Gracias...
  #2 (permalink)  
Antiguo 23/05/2009, 05:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 2 meses
Puntos: 300
Respuesta: Consulta WHERE MATCH AGAINST a dos campos

así tendrán que aparecer las 4:
SELECT * from TABLA1 WHERE MATCH(campo1) AGAINST ('+ANIMAL, +DOMESTICO' IN BOOLEAN MODE) AND MATCH(campo2) AGAINST ('+PEQUEÑO, +BONITO' IN BOOLEAN MODE)

el más + indica obligado.
Mira la información sobre las búsquedas boolean full-text
http://dev.mysql.com/doc/refman/5.0/...t-boolean.html

Lo segundo no se hace con la base, sino con programación. Te bastará controlar que cuando no escribas nada en los campos del formulario haga un select de todos los registros. Pregunta en el foro de tu programa.
  #3 (permalink)  
Antiguo 02/06/2009, 17:06
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consulta WHERE MATCH AGAINST a dos campos

Gracias, me has ayudado para que funcione. El problema era que cojo las variables desde un parametro URL y me lo codificaba.
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 20:13.