Sql 如何组合具有不同列的多个表

Sql 如何组合具有不同列的多个表,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有三张桌子。我希望school表设置major\u subject的数据,并在结果上获得minor\u subject 此外,由于此表没有列,因此也会为主修科目自动设置单元3.0 我尝试使用UNION,但由于major\u subject列与minor\u subject表不同,因此出现了错误 school major_subject | school_id | school_name |

我有三张桌子。我希望
school
表设置
major\u subject
的数据,并在结果上获得
minor\u subject

此外,由于此表没有列,因此也会为
主修科目
自动设置
单元3.0

我尝试使用
UNION
,但由于
major\u subject
列与
minor\u 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
join
school
major\u subject
获取两个表的所有行组合,然后使用
UNION all
添加
minor\u 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