1

行がどのテーブルから来ているかを示す列を持つビューを作成する必要があります。

SQL Server2005Expressを使用しています

具体的には、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

各selectステートメントに、データの取得元のテーブルを示す列を追加するだけです。そうすれば、開発者とユーザーを簡単に区別できます。

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 の代わりに UNION ALL を使用すると、パフォーマンスが向上します。プレーン UNION は、ユニオンからの重複した結果を排除する特別な作業を行います。新しい TableName 列のおかげで、結果が重複することはありません

于 2012-04-18T15:59:16.610 に答える