面试问题:如何一次将SQL中的多个表连接在一起



>假设您有许多名称为公司 1、公司 2 等的表,直到公司 1000。结构如下:

Company 1
product cost($)
A        C1A
B        C1B
C        C1C

有1000个这样的表.所有 cpmapnie 销售 3 产品 A, B,C .您将如何将您的公司 520 公司与所有其他 1000 家公司进行比较。

所有这些表都在数据库Companies

如何在SQL中同时连接所有这些表?

我非常了解联接,但我知道一次我们只能联接两个表。有没有办法在SQL中将多个表连接在一起

预期产出

product cost($)_Company1  cost($)_Company2   cost($)_Company3   
A        C1A                     C2A          C3A
B        C1B                     C2B          C3B
C        C1C                     C2C          C3C  and so on for all 1000 companies

请注意,在合并的预期输出中,_Company名称追加到成本列名称,以标识与成本对应的公司

我在采访中被问到这个问题,你将如何一气呵成,我不知道答案。任何人都可以帮忙。表的结构与所有表中的列名相同,productcost($)列名

试试下面的例子。联接表没有限制。

SELECT Company1.Product,
Company1.cost($) 'cost($)_Company1',
Company2.cost($) 'cost($)_Company2',
Company3.cost($) 'cost($)_Company3',
CompanyN.cost($) 'cost($)_CompanyN'
FROM Company1
INNER JOIN Company2 ON Company1.Product = Company2.Product
INNER JOIN Company3 ON Company1.Product = Company3.Product
INNER JOIN CompanyN ON Company1.Product = CompanyN.Product

您可以使用简单的join尝试以下内容

select
t1.product,
t1.cost as 'cost($)_Company1',
t2.cost as 'cost($)_Company2',
t3.cost as 'cost($)_Company3',
from company1 t1
join company2 t2
on t1.product = t2.product
join company3 t3
on t2.product = t3.product
order by
t1.product

最新更新