我想获取指定大学的成绩,
考试表包含startDate
,EndDate
,noOfStudents
和collage_id
。
学生表中有examId
和subject
结果表包含studentId
,score
和grade
。
我在下面的查询中尝试过此查询,该查询对学生返回null,对于考试不返回任何值,并且它一直返回结果数据库中存在的所有数据,我只需要属于指定的大学,所以在这里有任何建议
results.find({
include: [{
model: models.students,
include: [{
model: models.exam,
as: 'exam',
where:{collage_id:id}
}],
as: 'students'
}]
});
Output:{
"id": 1,
"student_id":2,
"score": 88,
"grade" : B,
"created_at": "2018-11-14T13:38:25.377Z",
"updated_at": "2018-11-14T13:38:25.377Z",
"students": null
}
Expected Output:{
"id": 1,
"student_id":2,
"score": 88,
"grade" : B,
"created_at": "2018-11-14T13:38:25.377Z",
"updated_at": "2018-11-14T13:38:25.377Z",
"students": {
"examId": 2
"subject":
},exam:{
"startDate":Date,
"EndDate":date,
"noOfStudents" : 100
"collage_id": 1
}
}
答案 0 :(得分:0)
在您的问题中我看不到什么困惑。
Students table
中的问题,我可以看到您只有列examId
和subject
。那么如何将Results
表与Students
表链接。要将Results
表与Students
表链接,您的学生表应为Students(id / studentId,examId,subject)
和关联(链接)results.belongsTo(students,{foreignKey:'id / studentId'})
完成这些操作后,您只能说
results.find({
include: [{
model: models.students,
}]
});
Students
表和Exams
表之间建立关联(链接),但是在Exams
表中形成您只有列:startDate
,EndDate
,noOfStudents
和collage_id
。那么,该协会在哪里?您如何将学生链接到考试。我认为noOfStudents
列表示学生人数。如果您的意思是学生的身份证。
您必须具有关联Student.hasMany(Exam,{foreignKey:'noOfStudents'})
完成这些操作后,您将可以查询
results.find({
include: [{
model: models.students,
include: [{
model: models.exam,
where:{collage_id:id}
}]
}]
});
我不确定关键字as
,因为我对此还不陌生。据我所知,尽管我不确定,但在查询之前必须在关联中使用关键字as
。
并尝试跟踪您对此(控制台)的查询,并查看其生成的内容。 =)