sql - 面试题:如何在 SQL 中一次性将多个表连接在一起
问题描述
假设您有许多名称为 Company1、Company2 等的表,直到 Company 1000。结构如下:
Company 1
product cost($)
A C1A
B C1B
C C1C
有 1000 个这样的表。所有 cpmapnies 销售 3 种产品 A、B、C。您将如何将您的公司(如 Company 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 名称附加到成本列名称以标识与成本对应的公司
面试时被问到这个问题,你会怎么一口气做完,我不知道答案。任何人都可以请帮忙。表的结构与所有表中的列名相同product
,并且cost($)
是列名
解决方案
试试下面的例子。连接表没有限制。
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
推荐阅读
- python - dict 参数的类型注释
- xml - XQuery - 相当于 SQL NOT IN
- python - append(variable) 插入错误的值,我不知所措
- c# - 组合框选定值返回 System.Data.DataRowView
- javascript - VueJs 从 Vuetify 重新加载一个简单的表
- node.js - 如何在 Node 中使用 Promises 链接数据库查询?
- django - 无法将外键传递给表单以过滤该键
- css - 为什么单击另一个复选框时未选中我的复选框?(Vue,CSS)
- python - 为什么我无法通过在 python 中使用 ZMQ 订阅 localhost 来接收 MQTT
- sql - 如何加速 mariadb 连接表