我创建了多选题系统,并创建了以下表格。我想要一个结果显示学生选择了多少正确的答案以及错误的答案。
登录表
name usergroup matricno
alex 1 ac91919
sarah 1 ac92151
测验表
QuizID QuizText
1 level 1
2 level 2
3 level 3
问题表
QuestionID QuestionText
1 Question1
2 Question2
3 Question3
答案表。它有fk来询问表和位以确定答案是否正确[1-right 0-wrong]
answerID answer_question_id(fk) answertxt answer_isright
1 1 answer1 1
2 1 answer2 0
3 1 answer3 0
4 2 answer1 1
5 2 answer2 0
6 2 answer3 0
每个回答测验的用户结果表。从下表,学生matric no ac91919回答quizid2,这是2级。
ResultID Result_Quiz_ID MatricNo
1 2 ac91919
resultdetail表存储用户的答案。 ResultDetail_ResultId(fk to resultID)ResultDetail_AnswerId(FK to TblAnswers)
ResultDetailId ResultDetail_ResultId ResultDetail_AnswerId
1 1 2
从这些表中,我如何创建一个像这样的视图:例如,alex有5个正确答案,10个错误答案。此视图仅计算每个用户的最大重新计数(最新结果)。
name QuizTxt RightAnswer WrongAnswer
alex Level 1 5 10
sarah Level 2 3 9
数据库结构:
Table login
name varchar(55)
usergroup int
matricno varchar(20)
TblQuiz
Quiz_Id int
Quiz_Name nvarchar(200) --
TblQuestions
Question_Id int
Question_Quiz_Id int --(FK To TblQuizes)
Question_Text nvarchar(200)
TblAnswers
Answer_Id int
Answer_Question_Id int --(FK To TblQuestions)
Answer_Text nvarchar(200)
Answer_IsCorrect bit
TblResults
Result_Id int
Result_Quiz_Id int --
TblResultDetails
ResultDetails_Id int
ResultDetails_Result_Id int
ResultDetails_Answer_Id int
答案 0 :(得分:1)
我过去做过类似的事情。你可以为答案制作另一张表 对于每一行都将是一个答案。这样做的好处是你可以显示单个玩家,也可以显示大多数人的回答最高分 你没有要求任何代码,所以我认为你需要一种方法。
您可以通过将它们放入数组中来循环遍历项目列表。然后你可以将它放在listview或datagrid中,或者你需要或想要使用循环函数构建的东西。列表视图和数据视图是最常见的,但您可以使用组合框等。因为我不知道您的数据库在哪里以及我无法帮助您使用代码的类型。一般来说就是这样。
以下是如何连接数据库并加载数据的示例
http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_dbconn_repeater
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
sql="SELECT * FROM customers"
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
customers.DataSource=dbread
customers.DataBind()
dbread.Close()
dbconn.Close()
end sub
</script>
<html>
<body>
<form runat="server">
<asp:Repeater id="customers" runat="server">
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>Companyname</th>
<th>Contactname</th>
<th>Address</th>
<th>City</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Container.DataItem("companyname")%></td>
<td><%#Container.DataItem("contactname")%></td>
<td><%#Container.DataItem("address")%></td>
<td><%#Container.DataItem("city")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
还有许多其他方法可以像LINK()等一样。只需使用谷歌或bing找到更多方法。