У меня 3 стола. Я хочу, чтобы таблица school
задавала данные major_subject
и получала minor_subject
результат.
А также автоматически установить units 3.0
вместо major_subject
, так как в этой таблице нет столбца.
Я пытался использовать UNION
, но получаю сообщение об ошибке, так как столбец major_subject
не совпадает с таблицей minor_subject
.
school major_subject
| school_id | school_name | | subj_name | date_offered |
----------------------------- ---------------------------------
| 1 | schoolA | | Business101 | 2021/01/01 |
| 2 | schoolB | | Marketing101 | 2021/01/01 |
| 3 | schoolC |
minor_subject
| school_id | subj_name | units | date_offered |
----------------------------------------------------
| 1 | Math | 1.0 | 2021/01/01 |
| 1 | English | 1.0 | 2021/01/01 |
| 1 | Science | 1.0 | 2021/01/01 |
| 2 | History | 2.0 | 2021/01/01 |
И таблица результатов будет выглядеть так:
| school_id | subj_name | units | date_offered |
---------------------------------------------------------
| 1 | Business101 | 3.0 | 2021/01/01 |
| 1 | Marketing101 | 3.0 | 2021/01/01 |
| 1 | Math | 1.0 | 2021/01/01 |
| 1 | English | 1.0 | 2021/01/01 |
| 1 | Science | 1.0 | 2021/01/01 |
| 2 | Business101 | 3.0 | 2021/01/01 |
| 2 | Marketing101 | 3.0 | 2021/01/01 |
| 2 | History | 2.0 | 2021/01/01 |
| 3 | Business101 | 3.0 | 2021/01/01 |
| 3 | Marketing101 | 3.0 | 2021/01/01 |
Вы можете CROSS
присоединиться school
к major_subject
, чтобы получить все комбинации строк 2 таблиц, а затем с помощью UNION ALL
добавить строки из minor_subject
:
SELECT s.school_id, m.subj_name, 3.0 units, m.date_offered
FROM school s CROSS JOIN major_subject m
UNION ALL
SELECT school_id, subj_name, units, date_offered
FROM minor_subject
ORDER BY school_id
Смотрите демо.
Полученные результаты:
> school_id | subj_name | units | date_offered
> --------: | :----------- | ----: | :-----------
> 1 | Business101 | 3.0 | 2021-01-01
> 1 | Marketing101 | 3.0 | 2021-01-01
> 1 | Math | 1.0 | 2021-01-01
> 1 | English | 1.0 | 2021-01-01
> 1 | Science | 1.0 | 2021-01-01
> 2 | History | 2.0 | 2021-01-01
> 2 | Marketing101 | 3.0 | 2021-01-01
> 2 | Business101 | 3.0 | 2021-01-01
> 3 | Business101 | 3.0 | 2021-01-01
> 3 | Marketing101 | 3.0 | 2021-01-01