#mysql #node.js #select
#mysql #node.js #выберите
Вопрос:
Как я могу получить желаемый результат в MySQL:
Column name1
ID Right Wrong
1 3 4
2 5 2
Column name2
ID Right Wrong
1 3 2
2 1 1
Result:
Name Total_Right Total_Wrong
name1 8 6
name2 4 3
Я хочу использовать операторы select и join для получения желаемого результата, но я не уверен, как я могу это сделать.
До сих пор я пытался это сделать с node.js с этим:
app.get('/processAllStats',function(req,res)
{
var name=[];
var stats=[];
var a='';
connection.query('select username from user_login',function(err,user){
if(err)
console.log('Error: ' err);
else
{
for(var i=1;i<user.length;i )
{
name.push(user[i].username);
connection.query('select sum(no_right) as all_right,sum(no_wrong) as all_wrong from ' name[i-1],function(err,rank){
stats.push(rank[0]);
});
}
}
});
});
Пожалуйста, помогите!!
Комментарии:
1. Что вы пробовали до сих пор?
2. Вопрос, по-видимому, не по теме, потому что вопросы, требующие кода, должны демонстрировать минимальное понимание решаемой проблемы. Включите попытки решения, почему они не сработали, и ожидаемые результаты.
3. Я хотел сделать это в сочетании с node.js . Итак, я запросил отдельно и попытался создать новый массив желаемого результата, но, я думаю, из-за того, что он асинхронный, цикл for выполняется не так, как хотелось бы, и я получаю сообщение об ошибке.
4. Просто используйте
UNION
запрос.
Ответ №1:
Используйте UNION
SELECT 'name1' AS Name, SUM(Right) AS Total_Right, SUM(Wrong) AS Total_Wrong
FROM name1
UNION
SELECT 'name2' AS Name, SUM(Right) AS Total_Right, SUM(Wrong) AS Total_Wrong
FROM name2