SQL Server 表级联

问题描述 投票:0回答:1

我在 SQL Server 中有一个表,有 3 列分别代表房间、过道和包厢。这些柱子的设置方式是房间有过道,过道还有盒子。可以使用什么语法来获取三个位置中所有可能的级联组合的数据。例如,一个房间可以有 3 个过道,每个过道可以有 6 个盒子。

sql sql-server
1个回答
0
投票

您说“获取数据”,这只是从表中选择数据。既然你根本就问这个问题,我假设你需要一些东西来解释重复项或以有序的方式放置它们,你可以使用 DISTINCT 和 ORDER BY 来完成,如下所示:

SELECT DISTINCT Room, Aisle, Box
FROM YourTable
ORDER BY Room, Aisle, Box

如果您想生成表中不存在的数据,答案将取决于过道和包厢编号的形成方式。如果各个房间的过道编号不唯一,并且各个过道的包厢编号也不唯一,则您可以将这些值放在单独的临时表中并使用 CROSS JOIN。但请注意,如果任一元素是唯一的(例如,如果无论过道或房间都只能有一个盒子 550),那么交叉连接将无法满足您的需要。

SELECT R.Room, A.Aisle, B.Box 
FROM RoomTable R
CROSS JOIN AisleTable A
CROSS JOIN BoxTable B
ORDER BY R.Room, A.Aisle, B.Box

这将返回所有可能的组合并对它们进行排序以便于阅读。

© www.soinside.com 2019 - 2024. All rights reserved.