0
から私は現在sequelizeを使用してシステムを開発していると私はこのような複数のテーブルからデータを取得するクエリを実行する必要があります。は選択みとめテーブルSequelize
Select Courses.id, Rooms.DisplayLabel, Periods.DisplayName, Subjects.Name
from Rooms, Periods,Subjects, Courses
where Periods.id = Courses.PeriodId and Rooms.id=Courses.RoomId
and Subjects.id = Courses.SubjectId and Courses.id = 2
ルーム、被験者および期間は、カタログやコースありさ私はすべてのキーを保存するテーブル。 Sequelizeの定義は、このようなものです:
module.exports = function(sequelize, DataTypes) {
var Course = sequelize.define('Course', {
Scholarship: {
type: DataTypes.STRING(30)
},
Level: {
type: DataTypes.INTEGER(2),
},
CourseType: {
type: DataTypes.STRING(30),
},
RecordStatus: {
type: DataTypes.BOOLEAN,
default: true
},
DeletedAt: {
type: DataTypes.DATE
}
},
{
associate: function(models){
Course.belongsTo(models.School, {foreignKey: {unique: true}});
Course.belongsTo(models.Person, {foreignKey: {unique: true}});
Course.belongsTo(models.Period, {foreignKey: {unique: true}});
Course.belongsTo(models.Schedule, {foreignKey: {unique: true}});
Course.belongsTo(models.Room, {foreignKey: {unique: true}});
Course.belongsTo(models.Subject, {foreignKey: {unique: true}});
Course.belongsTo(models.user, { as: 'CreatedBy' });
Course.belongsTo(models.user, { as: 'UpdateBy' });
Course.belongsTo(models.user, { as: 'DeleteBy' });
}
}
);
return Course;
};
私は私のコントローラ上で、これまでに取得する唯一のクエリはこれです:
exports.courseFields = function(req, res) {
db.Course.find({
where: {id: req.params.PeriodIdF},
attributes: ['id'],
include: [{model:db.Room, attributes:['DisplayLabel']}]})
.then(function(courses) {
return res.json(courses);
})
.catch(function(err) {
return res.render('error', {
error: err,
status: 500
});
});
};
私の質問は、どのように私は他のテーブルとフィールドが含まれますか?私は後編の仕組みを混同します。
おかげで、含まれています。ちょっとした質問ですが、どのようにIDとアソシエーションの外部キーを使ってContrain Keyを作成するのですか?それは、ユニークな:真実が作成されますが、それはフィールドに重複制限を与えないように思われる。 – Ellebkey