【问题标题】:Mysql: Find a column name dependant on a value in the column, search for colunm name as value in another tableMysql:根据列中的值查找列名,在另一个表中搜索列名作为值
【发布时间】:2014-02-19 11:38:28
【问题描述】:

纪念日

我有两张桌子

名册表

ID:1
日期:19/02/14
用户A:N
用户B:N
用户C:是
用户D:N

用户表

ID:1
用户名:UserA
姓名:约翰·史密斯
编号:2
用户名:UserB
名称:乔博客
等等……

我正在尝试搜索 RosterTable 以查看由“Y”指示的名单并返回列名,然后使用该列名在 UserTable 中查找用户详细信息。

我无法更改这些表格,因为它们已用于其他用途。

感谢您的帮助

【问题讨论】:

    标签: mysql search phpmyadmin


    【解决方案1】:

    如果我正确理解问题,这是一个非常糟糕的数据库设计。这是一种方法:

    select *
    from UserTable ut
    where exists (select 1
                  from RosterTable rt
                  where rt.UserA = 'Y' and ut.username = 'UserA' or
                        rt.UserB = 'Y' and ut.username = 'UserB' or
                        rt.UserC = 'Y' and ut.username = 'UserC' or
                        rt.UserD = 'Y' and ut.username = 'UserD'
                 );
    

    【讨论】:

      【解决方案2】:

      这是一个查询。它应该工作。主要思想是为 4 个用户中的任何一个选择具有 Y 值的 RosterTable 中的行,并使用两个表中通用的关联 ID 加入 UserTable

       select * from RosterTable rt 
       where rt.UserA = 'Y' 
       or rt.UserB = 'Y' 
       or rt.UserC = 'Y' 
       or rt.UserD = 'Y' 
       inner join UserTable ut on ut.ID = rt.ID
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 2020-10-03
        • 2019-07-13
        • 2014-02-18
        • 1970-01-01
        • 2014-12-21
        相关资源
        最近更新 更多