MySQL три таблицы соединения с суммой - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть три таблицы

Студент

studenid  stuname  
101       john     
102       aron     
103       mary     
104       lucy     

Тема

studenid  subjid  subjname   
101       1       maths      
102       2       science    
103       3       computer   
104       4       english    

Оценки

subjid  mark   
1       50
2       40
3       55
4       60
1       40
2       55
3       60

Я хочу вывод, подобный этому, где studenid (сумма оценки как общая)

studenid  stuname  mark     
101       john     90      
102       aron     95    
103       mary     115   
104       lucy     60

Заранее благодарю за помощь, я хочу вывод, подобный этому, даже запрос на присоединениеили подзапрос, который лучше всего подходит для хронометража

1 Ответ

0 голосов
/ 14 декабря 2018

Для этого требуется прямое левое объединение всех таблиц с агрегированием по учащимся.

SELECT
    st.studenid,
    st.stuname,
    COALESCE(SUM(m.mark), 0) AS mark
FROM Student st
LEFT JOIN Subject su
    ON st.studenid = su.studenid
LEFT JOIN Marks m
    ON su.subjid = m.subjid
GROUP BY
    st.studenid,
    st.stuname;

enter image description here

Демонстрация

Обратите внимание, что если studenid будет первичным ключом в таблице Student, то строго нам потребуется агрегировать только по этому столбцу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...