Как объединить несколько таблиц с разными столбцами

У меня 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  |    
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
589
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете 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 

Другие вопросы по теме