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