1

こんにちは私は次の情報を持つデータベーステーブルを持っています:

owner.primaryitowner, (bobsmith@mail.com)
owner.secondaryitowner, 
owner.primarybusinessowner, 
owner.secondarybusinessowner
users.username (email bobsmith@mail.com)
users.displayname (e.g. Bob Smith)

問題は、所有者が電子メールとしてのみ保存されることです。私が普段使っている別のテーブルがあります

inner join users on users.username = owner.primaryitowner to get users.displayname したがって、データは正しく読み取られます。`

私はこれを行うことができます

select u.displayname
from users u
inner join owners o on
    o.primaryitowner = u.username
    or o.secondaryitowner = u.username
    or o.primarybusinessowner = u.username
    or o.secondarybusinessowner = u.username

問題は、すべてを1つの列にするのではなく、一意の列を作成する必要があることです。

PSデータベースを変更することはできません。私はレポートライターにすぎません。

よろしくお願いします

4

2 に答える 2

3

ユーザーから所有者への電子メールの各列に参加する必要があります

SELECT u.displayname AS userName
   , po.displayName AS PrimaryItOwnerUsernName
   , so.displayName AS SecondaryIdOwnerUserName
FROM users AS u
INNER JOIN owners AS po on u.primaryitowner = po.username
INNER JOIN owners AS so ON u.secondaryitowner = so.username
...
WHERE u.UserName = 'Ryan J Morse'

所有者テーブル(エイリアス)に複数回参加する場合、これにより、ユーザーに保存されている電子メールを、レポートに必要な表示名に変更できます。

于 2012-10-25T20:22:11.753 に答える
0

これはあなたのニーズに合っていますか?所有者テーブルの観点から見ると、単一の所有者レコードの個別の列としてすべての表示名を取得する方が簡単です。逆にすると、同じユーザーの複数の所有者レコードから情報が取得されます。それがあなたが望むものであるならば、これはうまくいきません。

select prim_o.displayname as "Primary IT Owner",
    sec_o.displayname as "Secondary IT Owner",
    prim_bo.displayname as "Primary Business Owner",
    sec_bo.displayname as "Secondary Business Owner"
from owner o
   inner join users prim_o (o.primaryitowner = prim_o.username)
   inner join users sec_o (o.secondaryitowner = sec_o.username)
   inner join users prim_bo (o.primarybusinessowner = prim_bo.username)
   inner join users sec_bo (o.secondarybusinessowner = sec_bo.username)
于 2012-10-25T20:28:42.043 に答える