MySQL выбирает из нескольких таблиц и создает новую таблицу

#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