Foro

Estoy haciendo un foro en asp. En la bdd tengo tres tablas: temas, mensajes y respuestas, es lógico para qué sirve cada una.
En la pagina principal de foros, foro.asp, escribo una tabla con todos los temas (recorro todo el recordset). Tambien pongo los mensajes ("select * from mensajes where tema="&rstemas("id")) y luego le hago un recordCount para contar cuantos mensajes tienen en el campo 'tema' el id del tema en el que me encuentro. Ademas quiero poner las respuestas que tiene. Pero la tabla de respuestas no tiene un campo 'tema', solo tiene un campo de 'pregunta' para referirse a la pregunta que responde.
Campos de 'temas':
1.-Id
2.-Nombre
3.-Descripción
Campos de 'mensajes':
1.-Id
2.-Tema (donde ira el id del tema)
3.-Titulo
4.-Contenido
Campos de 'respuestas':
1.-Id
2.-Pregunta (donde ira el id de la pregunta que responde)
3.-Titulo
4.-Contenido
He puesto el esquema para que se entienda mejor. Mi pregunta es: Recorriendo el recordset de 'temas', ¿cuál es la sentencia sql para saber el número de respuestas que contiene el tema?
Muchas gracias por tu tiempo, recompensare tu esfuerzo.
1

1 respuesta

Respuesta
1
Para hacerlo rapido, inserta un campo "tema" en la tabla respuestas, donde incluir el tema que pertenece, al responder el usuario, ya sabes incluye también el valor del tema en este nuevo campo, dispondrás del tema y del mensaje a que corresponde la respuesta en la tabla respuesta.
Luego la sentencia es la misma que has hecho para averiguar los mensajes del tema, pero ahora a aplicada a la tabla respuestas
Creamos la conexión CON y el recordset RESP y quedaría así:
<%
SQL="select * from respuestas where tema="&rstemas("id")"
RESP.Open SQL, CON,1,2
NRespuestas=RESP.recordcount
%>
Podríamos hacer la sql más compleja con las 2 tablas, mensajes y respuestas, y no meter el valor tema en la tabla respuestas, pero también es una sql poco costosa.
Vale, eso es lo que había echo, he pensado que es lo más fácil, pero bueno, gracias de todos modos. Ya tengo echas las consultas y todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas