1

我需要创建一个视图,其中有一列指示该行来自哪个表。

我正在使用 SQL Server 2005 Express

更具体地说,我有一个数据库,其中包含一个名为 users 的表、一个名为 developers 的表和一个包含银行帐户数据的单独表。我需要一个显示用户和开发人员的银行帐户信息的视图,以及一个额外的列来说明该行是来自用户还是开发人员。

我有这个:

CREATE VIEW bankDataView
AS

SELECT accountinfo, name, lastname, devcode as id
FROM developer d INNER JOIN bankdata bd ON
d.bankdataID = bd.bankDataID
UNION
SELECT accountinfo, name, lastname, userID as id
FROM user u INNER JOIN bankdata bd ON
u.bankdataID = bd.bankdataID 

但现在我需要知道如何获得额外的专栏。

这是可能的,还是我应该考虑另一种方法?

4

2 回答 2

4

只需在每个选择语句中添加一个额外的列,说明数据来自哪个表。然后您可以轻松区分开发人员和用户。

CREATE VIEW bankDataView
AS

SELECT accountinfo, name, lastname, devcode as id, 'Developer' as TableName
FROM developer d 
INNER JOIN bankdata bd 
    ON d.bankdataID = bd.bankDataID
UNION
SELECT accountinfo, name, lastname, userID as id, 'User' as TableName
FROM user u 
INNER JOIN bankdata bd 
    ON u.bankdataID = bd.bankdataID 
于 2012-04-18T11:39:10.890 回答
0

bluefeet 在逻辑上是正确的,但是如果您使用 UNION ALL 而不是普通的 UNION 性能会更好。Plain UNION 做了额外的工作来消除联合中的重复结果。由于新的 TableName 列,不会有重复的结果

于 2012-04-18T15:59:16.610 回答