天儿真好
我有2张桌子
ID:1
日期:19/02/14
UserA:N
UserB:N
UserC:Y
UserD:N
ID:1
用户名:UserA
姓名:约翰史密斯
ID:2
用户名:UserB
姓名:乔博客
等...
我正在尝试搜索RosterTable以查看“Y”指示的名单,并返回coulmn名称,然后使用该列名在UserTable中查找用户详细信息。
我无法更改这些表,因为它们用于其他内容。
感谢您的帮助
答案 0 :(得分:0)
这是一个查询。它应该工作。主要思想是在RosterTable中为4个用户中的任何一个选择具有Y值的行,并使用两个表中常见的关联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
答案 1 :(得分:0)
如果我正确理解了这个问题,这是一个非常糟糕的数据库设计。这是一种方式:
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'
);