2012-06-13 54 views
2

對不起,但我不知道如何問這個問題,但我正在一個幫助臺應用程序,我有門票在一個表中創建。我還有另一張存儲用戶的表格。我的問題在於門票表中,我列出了創建門票的用戶,將解決門票的技術人員以及查看門票的用戶。所有三個用戶都參考用戶表。那麼,如何查詢票據表並獲取引用存儲用戶的同一個表的所有三個用戶?MySQL SQL命令查詢從三個相同的列到一個表到另一個表

表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 

感謝史蒂夫

+0

執行下面的查詢給我一個錯誤 '選擇Ticketnumber,EnteredBy,問題,記者。用戶名,Developers.UserName,Managers.UserName FROM門票 INNER JOIN AS記者用戶ON Tickets.EnteredBy = Reporters.UserID INNER JOIN作爲開發者的用戶ON Tickets.FixedBy = Developers.UserID INNER JOIN用戶作爲管理者ON Ticket.ResponsibleUser = Managers.UserID' 當我嘗試檢索時,程序出錯他的數據。 (DataBinding:'System.Data.DataRowView'不包含名爲'Reporters''的屬性。) –

+0

The DataRecord('Reporters.UserName')' 上面的評論實際上是史蒂夫對他的問題的一個待定編輯。我想過在這裏粘貼它。 @Steve:最好將這些類型的東西作爲你的問題或特定答案的評論。在這種情況下,由於兩個答案非常相似,所以我認爲將它作爲評論在這裏更合適。 –

+0

@Steve:我回顧了我的查詢並修復了查詢中的一些錯誤。請再試一次。 –

回答

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 
+1

爲三個聯接添加三個單獨的別名可能是值得的,否則很難判斷哪個用戶鏈接到了哪個字段。 – bendataclear

+0

謝謝你指出。我相應地編輯了我的答案。 –

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... 
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; 
相關問題