SQL-запрос для отображения 3 имен пользователей из идентификаторов пользователей в одной записи об ошибке - PullRequest
0 голосов
/ 28 сентября 2010

Я хотел бы показать все имена пользователей, которые взаимодействовали с ошибкой в ​​MS Access. Я не понимаю, как ссылаться на одно и то же поле Users.UserName 3 раза в моем операторе выбора?

Вот мои столы

--------------------------------------------
Table 'Bugs'
--------------------------------------------
BugID    OpendBy    ClosedBy    LastChangedBy
1           1          3               2    
2           3          4               4           
3           2          4               4
4           3          1               3

--------------------------------------------
Table 'Users'
--------------------------------------------
ID    UserName        
1     Joe      
2     Chris   
3     Steve     
4     Sarah     

Я бы хотел, чтобы запрос вернул

BugID OpendBy ClosedBy LastChangedBy 
1       Joe     Steve     Chris
2       Steve   Sarah     Sarah
3       Chris   Sarah     Sarah
4       Steve   Joe       Steve

Ответы [ 2 ]

4 голосов
/ 28 сентября 2010

Я использовал LEFT OUTER JOIN ниже для ClosedBy, так как я предполагаю, что это значение может быть NULL. Если любой из остальных может быть NULL, вам также нужно изменить эти объединения на LEFT OUTER.

select b.BugID, uo.UserName as OpendBy, 
    uc.UserName as ClosedBy, 
    ul.LastName as LastChangedBy
from Bugs b
inner join Users uo on b.OpendBy = uo.ID
left outer join Users uc on b.ClosedBy = uc.ID
inner join Users ul on b.LastChangedBy = ul.ID
1 голос
/ 29 сентября 2010

Если вы хотите избежать всего уродливого объединения, вы можете вместо этого структурировать это как отдельную таблицу с BugID, ActionType (OpenedBy, ClosedBy, LastChangedBy) и UserID.Тогда у вас также может быть поле даты, вместо трех разных полей даты в вашей записи, кроме записи.

Записи дешевы, поля дороги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...