Sql server 如何使主键成为另一个表中的主键和Microsoft SQL Server中的两个字母的组合
在SQL Server中,我有一个表Sql server 如何使主键成为另一个表中的主键和Microsoft SQL Server中的两个字母的组合,sql-server,Sql Server,在SQL Server中,我有一个表总线组,其中有一个主键列总线组代码 我有另一个表bus,主键为bus code,说明abus code是bus车队代码+2个字母 如何将总线代码组合为总线组代码+2个字母?您可以将主键设置为代码和总线组的组合: 创建表[公交车队]( 舰队varchar(55)不为空, 代码varchar(2)不为空, 主键(车队、代码) ); 您可以将主键设置为代码和震源组的组合: 创建表[公交车队]( 舰队varchar(55)不为空, 代码varchar(2)不为空, 主
总线组
,其中有一个主键列总线组代码
我有另一个表bus
,主键为bus code
,说明abus code
是bus车队代码
+2个字母
如何将
总线代码
组合为总线组代码
+2个字母?您可以将主键设置为代码和总线组的组合:
创建表[公交车队](
舰队varchar(55)不为空,
代码varchar(2)不为空,
主键(车队、代码)
);
您可以将主键设置为代码和震源组的组合:
创建表[公交车队](
舰队varchar(55)不为空,
代码varchar(2)不为空,
主键(车队、代码)
);
如果您决定不按照@TimBiegeleisen的建议创建另一个表,这是一个可能的解决方案
SELECT
[bf].[bus-fleet-code],
[b].[bus-code]
FROM
[bus-fleet] bf
LEFT OUTER JOIN [bus] b ON [bf].[bus-fleet-code] = LEFT([b].[bus-code], LEN([b].[bus-code]) - 2)
编辑:
下面是一个完整的、可运行的示例
如果您不按照@TimBiegeleisen的建议创建另一个表,那么这是一个可能的解决方案
SELECT
[bf].[bus-fleet-code],
[b].[bus-code]
FROM
[bus-fleet] bf
LEFT OUTER JOIN [bus] b ON [bf].[bus-fleet-code] = LEFT([b].[bus-code], LEN([b].[bus-code]) - 2)
编辑:
下面是一个完整的、可运行的示例
我有两个表,公交车队和公交车……在表bus中,公交车代码是公交车车队代码+2的组合letters@RefiloeRaselane,您实际上有两个单独的属性来形成正确规范化数据库设计中的复合主键。这也允许您创建一个外键,以保证只有有效的总线车队代码值。如果您的用户希望在单个列中查看PK,请在应用程序端或T-SQL上连接它们。您还可以添加一个计算列
bus\u code\u键作为fleet+code
。我尝试将这两个字母连接起来,但没有。原因是我有单独的桌子。@refiloane,你的问题不清楚。我知道bus code
是bus
表的主键,所以它不是已经有bus-fleet-code
和两个字母连在一起了吗?如果不是,这两个字母的来源是什么?我有两个表,bus fleet和bus…..在表bus中,bus code是bus fleet code+2的组合letters@RefiloeRaselane,您实际上有两个单独的属性来形成正确规范化数据库设计中的复合主键。这也允许您创建一个外键,以保证只有有效的总线车队代码值。如果您的用户希望在单个列中查看PK,请在应用程序端或T-SQL上连接它们。您还可以添加一个计算列bus\u code\u键作为fleet+code
。我尝试将这两个字母连接起来,但没有。原因是我有单独的桌子。@refiloane,你的问题不清楚。我知道bus code
是bus
表的主键,所以它不是已经有bus-fleet-code
和两个字母连在一起了吗?如果没有,这两个字母的来源是什么?您好,如果您的问题得到了回答,您应该标记一个答案。您可以通过单击答案旁边的复选标记来完成。您好,如果您的问题得到了回答,您应该标记一个答案。您可以通过单击答案旁边的复选标记来完成此操作。