SQL с использованием подзапросов вместо объединения для одного

Я пытаюсь создать выбор, который позволит мне объединить две таблицы вместе без использования какой-либо операции, использующей JOIN. Уловка состоит в том, что эти две таблицы содержат отношения от одного до многих.

Допустим, есть две таблицы, отдел и курс.

отдел
D_CODE | ШКОЛА
01 | 1111
02 | 1111
03 | 2222

Курс
CRS_CODE | D_CODE
MATH1 | 01
MATH2 | 02
ACCT1 | 03

Как найти все школы и общее количество курсов, которые он предоставляет, без какого-либо соединения?
В результате школа 1111 имеет 2 курса, а в школе 2222 – 1 курс.
Я попытался использовать WITH и несколько подзапросов, но результирующие значения всегда дублируются. Таким образом, скажем, школа 1111 имеет 16 курсов, а в школе 2222 – 16 курсов (в качестве примера).

Руководство будет высоко оценено. Спасибо!

Попробуй это. Без использования sub-query в Where condition вы также получите тот же результат.

 SELECT Count(D_CODE) No_OF_Course, SCHOOL FROM Department WHERE D_CODE IN(SELECT D_CODE FROM course) GROUP BY SCHOOL 

Но вы можете избежать подзапросов и явных объединений: используйте SELECT для нескольких таблиц (какое-то неявное объединение). Этот код не проверен, но, вероятно, будет работать:

 SELECT COUNT(*) FROM course, department WHERE course.D_CODE = department.D_CODE 

Изменить: комментатор утверждает, что это утверждение неверно и звучит разумно: вы знаете, что подзапросы очень дороги и убьют производительность вашего сервера баз данных? При необходимости используйте объединения.