Манипулирование данными с двумя таблицами - PullRequest
0 голосов
/ 21 февраля 2019

Извините за крайне расплывчатое название, я, честно говоря, понятия не имею, как правильно сформулировать свой вопрос.Мне нужна помощь в написании запроса для двух таблиц.

Таблицы имеют имена subject и назначение , и они выглядят так:

Тема

subjectcode | subjectname         | classcode
---------------------------------------------
BAC3000     | Bachelorassignment  | IS3
DAT1000     | Databasetechonlogy  | IS1
INF1000     | Informationsystems  | IS1
LED2000     | IT-leadership       | IS2
OBJ2000     | OOP                 | IS2
PRG3000     | Applied programming | IS3

Назначение

subjectcode | number | deadline
-------------------------------------
DAT1000     | 1      | 2020-10-20
DAT1000     | 2      |
INF1000     | 1      | 2020-10-30
INF1000     | 2      | 

Мне нужно написать запрос, который выводит все коды субъекта и количество назначений этот предмет имеет.Вывод должен выглядеть следующим образом:

subjectcode | numberofassignment
--------------------------------
BAC3000     | 0  
DAT1000     | 2  
INF1000     | 2  
LED2000     | 0       
OBJ2000     | 0               
PRG3000     | 0 

Я попытался создать представления, объединить таблицы и использовать счет различными способами, но безуспешно.Любая помощь приветствуется.

Ответы [ 4 ]

0 голосов
/ 21 февраля 2019

Это будет работать в MySQL:

select subjectcode, (select count(*) from Assignment where subjectcode=s.subjectcode)  
from Subject s
0 голосов
/ 21 февраля 2019

С данными, которые вы предоставили, результат никак не будет выглядеть так же.Но по вашему запросу, что-то вроде этого будет работать:

SELECT s.subjectcode, count(1) as numberofassignment FROM subject s
LEFT JOIN assignment a
    ON s.subectcode = a.subjectcode
GROUP BY s.subjectcode
0 голосов
/ 21 февраля 2019

просто используйте count() и оставьте соединение

   select s.subjectcode ,count(number) as numberofassignment from
   Subject s left join Assignment a 
   on s.subjectcode=a.subjectcode 
   group by s.subjectcode 
0 голосов
/ 21 февраля 2019

Я не уверен, правильно ли я вас понял, но когда вы хотите посчитать количество назначений для субъектного кода, вы можете использовать это утверждение.Вам не нужно join для этого, вместо этого вы можете использовать подзапрос.

select 
 subjectcode,
 (select count(*) from Assignment where subjectcode = s.subjectcode) as numberofassignment
from 
 Subject s
...