2

抱歉,但我不知道如何提出这个问题,但我正在开发一个帮助台应用程序,我在一个表中创建了工单。我还有另一个存储用户的表。我的问题是票证表,我列出了创建票证的用户、将解决票证的技术人员以及查看票证的用户。所有三个用户都引用了 users 表。那么我如何查询tickets 表并获取引用同一个表的所有三个用户来存储用户?

表 1:门票

1) Ticketnumber
2) EnteredBy             User 100
3) Issue
4) FixedBy               User 102
5) FixedByNotes
6) ResponsilbeUser       User 103

表 2:用户

1) UserID
2) UserName

我现在能做的是这样的:

Select Ticketnumber, EnteredBy, Issue, UserName FROM Tickets INNER JOIN Users 
       ON Tickets.EnteredBy = Users.UserID

谢谢史蒂夫

4

3 回答 3

5

您可以将当前查询扩展为如下所示:

Select Ticketnumber, Issue, Reporter.UserName, Developer.UserName, Manager.UserName FROM Tickets 
INNER JOIN Users AS Reporter ON Tickets.EnteredBy = Reporter.UserID 
INNER JOIN Users AS Developer ON Tickets.FixedBy = Developer.UserID 
INNER JOIN Users AS Manager ON Tickets.ResponsibleUser = Manager.UserID
于 2012-06-13T13:36:11.193 回答
3

如果要获取所有名称,则需要联合表的别名:

Select Ticketnumber, Issue, Informers.UserName, Fixers.UserName, Supervisors.UserName FROM Tickets 
INNER JOIN Users Informers ON Tickets.EnteredBy = Users.UserID 
INNER JOIN Users Fixers ON Tickets.FixedBy = Users.UserID 
INNER JOIN Users Supervisors ON Ticket.ResponsibleUser = Users.UserID
WHERE...
于 2012-06-13T13:43:13.463 回答
1

对不起,因为我无法理解你的话,但如果我正确地假设你的需要..只是为了尝试这可以帮助你..

如果您需要其中任何一个,即所有输入或修复或看到问题的用户,您可以通过..

Select t.Ticketnumber, t.EnteredBy, t.Issue, u.UserID ,u.UserName FROM Tickets t
INNER JOIN Users u ON t.EnteredBy = u.UserID or t.FixedBy = u.UserID 
or t.ResponsibleUser = u.UserID;

如果您需要所有已输入、修复并看到问题的用户,您可以通过..

Select t.Ticketnumber, t.EnteredBy, t.Issue, u.UserID ,u.UserName FROM Tickets t
INNER JOIN Users u ON t.EnteredBy = u.UserID and t.FixedBy = u.UserID 
and t.ResponsibleUser = u.UserID;
于 2012-06-13T14:24:02.290 回答