#javascript #mysql #sql #node.js #sequelize.js
#javascript #mysql #sql #node.js #sequelize.js
Вопрос:
Я пытаюсь использовать Sequelize, и мой мозг, должно быть, был сожжен из всего проекта, и теперь я даже не могу присоединиться к таблицам, лол, итак, поехали:
задача в том, что у меня есть две модели, которые создают две таблицы, а другая модель пуста (так что пустая таблица) Я хотел бы объединить две таблицы в третью, а после в другом заявлении я хотел бы подсчитать, сколько пользователей (пример) имеет первый столбец, если есть два пользователя с одинаковыми именами, это означает, что это только один, поэтому он будет считаться как один.
module.exports = (sequelize, Sequelize) => {
const Gig = sequelize.define("gig", {
a: {
type: Sequelize.STRING,
},
b: {
type: Sequelize.STRING,
},
c: {
type: Sequelize.STRING,
}
});
return Gig;
};
module.exports = (sequelize, Sequelize) => {
const Gig1 = sequelize.define("gig1", {
a: {
type: Sequelize.STRING,
},
b: {
type: Sequelize.STRING,
},
c: {
type: Sequelize.STRING,
}
});
return Gig1;
};
module.exports = (sequelize, Sequelize) => {
const Gig2 = sequelize.define("gig2", {
a: {
type: Sequelize.STRING,
},
b: {
type: Sequelize.STRING,
},
c: {
type: Sequelize.STRING,
}
});
return Gig2;
};
это в другом файле
router.get("/", (req, res) => {
db.Gig.findAll({here the magic should happen thanks guys})
.then((users) => {
console.log(users);
res.sendStatus(200);
})
.catch((err) => {
console.log(err);
});
});
итак, Gig Gig1 = Gig2 затем подсчитайте пользователя в a (так что дайте мне сумму без клонов)
Я нашел эту статью, написанную ниже, которая похожа на то, что я ищу, но добавляю результат в Gig2, который является пустым, а затем выполняю вычисления. *
UNION ALL and an exclusion join
One way to make UNION include only the duplicates I want is to use an exclusion join to eliminate anything from the second result that is already included in the first, like this:
select * from apples as a
left outer join oranges as o on a.price = o.price
union all
select * from apples as a
right outer join oranges as o on a.price = o.price
where a.price is null;
This handles duplicate rows correctly and doesn’t include anything it shouldn’t. It’s necessary to use UNION ALL instead of plain UNION, which would eliminate the duplicates I want to keep. This may be significantly more efficient on large result sets, since there’s no need to sort and remove duplicates.