具有不同模式的 Union 2 table

Union 2 table with diff schema

以下是要求并给出 table 架构

使用 Table 1 ,Table 2 和 Table 3 在 Canvas 中编写查询,仅适用于 table 中可用的图书以及以下内容条件

Table Schema

我能够解决第一点。但是我无法理解第 2 点和第 3 点。你们认为这是一个错误的问题吗?

我的查询:

Select table2.book, table1.genre, table2.ratings, table2.reviews, table2.type, table2.price 
from table1 inner join table2 on table1.book_name = table2.book
where table1.genre = 'non-fiction' 
and table2.ratings > 4.2

要与 table3 联合,使用内部连接 ​​link table2 和 table3 作者姓名

Select table2.book, table1.genre, table2.ratings, table2.reviews, table2.type, sum(table2.price), sum(noofcopies)
from table1 
inner join table2 on table1.book_name = table2.book 
inner join table3 on table2.author=table3.author_name
where table1.genre = 'non-fiction' and table2.ratings > 4.2 
group by table2.book, table1.genre, table2.ratings, table2.reviews,table2.type

无法合并列数不同的两个表。

UNION 是一个集合运算符,它垂直合并表格中的数据。因此,列必须具有相同的编号、相同的数据类型和相同的顺序。

这里的技巧是,如果您想使用 UNION,则对两个表中存在的额外列使用 NULL。您可以使用这种方式匹配列数。

(select table2.book,table2.author,NULL as noOfCopies,table1.genre,table2.ratings,table2.reviews,table2.type,sum(table2.price) as totalprice
from table1 inner join table2 on table1.book_name = table2.book
where table1.genre = 'non-fiction'  and table2.ratings > 4.2 
group by table2.book, table1.genre, table2.ratings, table2.reviews,table2.type)
UNION
select NULL as book, author_name, noOfCopies, NULL as genre, NULL as ratings, NULL as reviews, NULL as type, NULL as totalprice from table3;