Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/09/2008, 06:06
yomesmo
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 5 meses
Puntos: 1
Consulta de busqueda para los que sabeis de esto

Necesito programar una consulta de busqueda para unos foros. Ya sabeis, que los usuarios puedan buscar por:

Palabra de busqueda
Foro específico
Autor

Las tablas y campos afectadas son estas:

Foros: idForo - NombreForo
Temas: idForo - idTema - TituloTema - MensajeTema - idUsuario
Respuestas: idTema - idRespuesta - MensajeRespuesta - idUsuario
Usuarios : idUsuario - Usuario

¿Ta claro?

Entonces lo que hago es lo siguiente:

1.- La consulta básica de una palabra que obviamente puede estar en cualquiera de estos campos:

TituloTema
MensajeTema
MensajeRespuesta

SELECT Foros.idForo, Foros.NombreForo,
Temas.idTema, Temas.TituloTema,
a.idUsuario, a.Usuario, b.idUsuario, b.Usuario FROM
((((Foros INNER JOIN Temas ON Foros.IdForo = Temas.IdForo)
INNER JOIN Respuestas ON Temas.TemaId = Respuestas.TemaId)
INNER JOIN Usuarios as a ON Usuarios.idUsuario = Temas.IdUsuario)
INNER JOIN Usuarios as b ON Usuarios.idUsuario = Respuestas.idUsuario)
WHERE Temas.TituloTema LIKE "'%palabra_buscada%'" OR Temas.MensajeTema LIKE "'%palabra_buscada%'" OR Respuestas.MensajeRespuesta LIKE "'%palabra_buscada%'"

Aquí ya empiezan los problemas, me da muchos contenidos repetidos y no quisiera utilizar el DISTINCT porque la base de datos es muy grande y esta palabrita sobrecarga mucho al servidor. También he detectado que me da datos incorrectos.

2.- Después necesitaría poder cribar por autor mediante una condicional.
3.- Y por último cribar mediante otra condicional (Si el usuario escogió un foro en concreto) el foro que sea.

Se acepta ayuda, orientación, consejos e incluso ingresos en mi cuenta corriente.

Desde ya muchas gracias a quien dedique un tiempo a tratar de ayudarme.

Saludos
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...