
30/09/2008, 06:06
|
| | Fecha de Ingreso: noviembre-2003 Ubicación: Madrid
Mensajes: 353
Antigüedad: 21 años, 4 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... |