다른 테이블에서 여러 테이블의 합계를 업데이트하는 방법

질문:

나는 세 개의 표가 있는데 그것이 바로 mtsr1a,engr1a와MAIN 점수이다. 아래와 같다.
이 표는 2열은 행렬수, 7열은 총성적의 과정이다
mtsr1a
Column2     Column7
15/001      8       
15/002      6       
15/003      7       
15/004      3       
15/005      7       
이 표는 매트릭스 번호 2열, 전체 성적 7열의 또 다른 과정이다.
영어 1A
Column2     Column7
15/001      9       
15/002      6       
15/003      4       
15/004      8       
15/005      1       
이것은 내가 두 테이블의 합을 얻는 데 사용하는 sql 코드이다
이것은 mysql에서 잘 작동하지만, 브라우저를 새로 고칠 때 복구됩니다
select Column2,sum(Column7) total
from
(
    select Column2,Column7
    from mtsr1a
    union all
    select Column2,Column7
    from engr1a
) t
group by Column2
코드를 사용하여 나는 더욱 좋은 총화를 얻었다
Column2     total
15/001      17      
15/002      12      
15/003      11      
15/004      11      
15/005      8   
이것은 매우 정확하지만, 내가 원하는 코드는 다음 표를 사용하고 업데이트할 것이다. 그 중에서 총의 분수열은 내가 얻은 결과 이상과 같다.
나는 이런 일을 기대하고 있다.
주점수
Column2     overall_scores
15/001      17      
15/002      12      
15/003      11      
15/004      11      
15/005      8
  • 나도 스스로 시도해 보았지만, 나 같은 신출내기에게 해결책이라는 것을 나는 안다.나는 이것이 필요하다. 나의 랭킹을 위해. 나는 이미 여기에 코드가 하나 있지만, 포함할 수 있다면, 이것은 추가적인 장점이 될 것이다. 나는 배울 것이다.
  • 또 다른 문제는 관리자가 단추를 눌렀을 때 데이터베이스를 업데이트하기 위해 php에서 sql 코드를 어떻게 사용하는가이다.
    감사합니다!
  • 답안

    세 번째 표에 두 개의 열 값을 삽입하고 사용하시겠습니까insert into .. select from는 다음과 같습니다.
    insert into mainscores
    select Column2,
    sum(Column7) total 
    from (select Column2,
                 Column7 
                 from mtsr1a 
             union all 
                 select Column2,
                        Column7 from engr1a ) t 
    group by Column2
    
    (또는)UPDATE 특정한 열을 원한다면, 업데이트 연결을 사용하십시오. 예를 들어
    UPDATE mainscores a 
        JOIN (
        select Column2,
        sum(Column7) total 
        from (select Column2,
                     Column7 
                     from mtsr1a 
                 union all 
                     select Column2,
                            Column7 from engr1a ) t 
        group by Column2 ) xx
    ON a.Column2 = xx.Column2 
    SET a.overall_scores = xx.total;