Получить количество столбцов на основе объединения из другой таблицы - PullRequest
0 голосов
/ 05 октября 2018

Я новичок в SQL.У меня есть таблицы и пытается получить количество столбцов из таблицы 1 и присоединиться к другому столбцу в таблице 2.

Таблица 1:

credits | sec_code | student_acc_id
--------------------------------
4            TUB        2098
5            JIY        2099
6            THG        3011

Таблица 2:

id| sec_code | student_acc_id | stu_id
-------------------------------------
1      TUB        2098          1011
5      JIY        2099          1011
7      THG        3011          1012

Я хотел бы получить сумму кредитов для студента, получив stu_id из table2 из sec_code и получить все student_acc_id для stuId и суммировать столбец кредитов в table1 для всех идентификаторов учетных записей студентов, найденных в таблице 2. IЯ не уверен, как мы можем присоединиться или сделать этот запрос простым.

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

Для приведенного выше примера давайте скажем, что я хочу получитьсумма кредитов для всех student_acc_id, где stu_id - 1011 из второй таблицы.у меня только первый столТаким образом, результат должен быть 4 + 5, так как обе учетные записи принадлежат одному и тому же студенту.

Так что мне нужно: -> получить stu_id на основе sec_code из таблицы 2 (скажем, для TUB sec_code) -> getall student_acc_id из таблицы, где stu_id является результатом вышеприведенного утверждения -> теперь, используя все эти суммы student_acc_id, кредит в таблице 1

Любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Используйте Join согласно вашим данным.Но в соответствии с примером данных лучше получить данные из таблицы Right.


select
    tab2.stud_id,
    SUM(tab1.credits) AS credit_sum
from
    table1 as tab1
    right join
        table2 as tab2
    on  tab1.student_acc_id = tab2.student_acc_id
    and tab1.sec_cd = tab2.sec_cd
where
    tab2.stud_id in(
        select distinct stud_id
        from table2
        where student_acc_id = '2098'
    )
group by
    tab2.stud_id;

Вы можете проверить его пример вывода здесь.Пожалуйста нажмите для решения скрипки.

0 голосов
/ 05 октября 2018

попробуйте, как показано ниже

  select t2.stu_id, 
  sum(t1.credits) 
  from t1 join t2 on t1.student_acc_id=t2.student_acc_id and
  t1.sec_code=t2.sec_code
  group by stu_id
  Having count(stu_id)>1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...