【问题标题】:table with multiple foreign keys joining 1 foriegn key in mysql具有多个外键的表加入 mysql 中的 1 个外键
【发布时间】:2012-10-25 20:17:13
【问题描述】:

您好,我有一个包含以下信息的数据库表:

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

问题是我需要有唯一的列,而不是全部放在一列中。

PS 我无法更改数据库,我只是一名报告编写者。

提前非常感谢

【问题讨论】:

    标签: mysql sql database join


    【解决方案1】:

    您需要将来自用户的每一列电子邮件加入所有者

    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'
    

    当您多次加入所有者表(别名)时,这允许您将存储在用户中的电子邮件更改为报告所需的显示名称。

    【讨论】:

      【解决方案2】:

      这是否满足您的需求?当您从所有者表的角度来看时,将所有显示名称作为单独的列获取单个所有者记录会更容易。采用另一种方式将从同一用户的多个所有者记录中提取信息。如果这就是你想要的,那么这将行不通。

      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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多