2016-03-25 67 views
2

我有一個SQL表(tblRequests)與不同用戶提交的請求列表。該字段是:使用另一個表中的值對SQL表進行排序

RequestID, UserID, DateSubmitted, Status 

我有另一個表(tblImportantUsers)與重要用戶的列表。該表只有一個UserID字段。

我想顯示重要用戶提交的請求在上面。我可以使用以下查詢來實現這一點:

select r.RequestID, r.UserID, r.DateSubmitted, r.Status 
from tblRequests r left join tblImportantUsers u on r.UserID = u.UserID 
order by u.UserID desc, r.DateSubmitted desc 

但是,我只希望重要用戶的活動請求顯示在頂部。不活動的請求應根據DateSubmitted字段進行排序。我甚至嘗試過UNION方法,但它也不起作用。

有什麼辦法可以實現這一點,而不需要在我的請求表中添加任何額外的列?

感謝

數據在tblRequests:

RequestID UserID DateSubmitted Status 
1   205  3/12/2016  0 
2   208  3/16/2016  1 
3   203  3/17/2016  0 
4   241  3/17/2016  1 
5   210  3/18/2016  0 
6   205  3/18/2016  1 
7   203  3/19/2016  1 
8   241  3/19/2016  1 

數據在tblImportantUsers:

UserID 
205 
203 

要求的結果:

RequestID UserID DateSubmitted Status 
7   203  3/19/2016  1 
6   205  3/18/2016  1 
8   241  3/19/2016  1 
5   210  3/18/2016  0 
4   241  3/17/2016  1 
3   203  3/17/2016  0 
2   208  3/16/2016  1 
1   205  3/12/2016  0 
+0

是'status'如果請求是活動還是不什麼顯示器? –

+0

是的,活動請求有狀態1,非活動請求有0 –

+0

樣本數據和期望的輸出將幫助我們瞭解您正在嘗試做什麼 –

回答

1

試試這個,它適用於紅移:

select 
     a.requestid 
    , a.userid 
    , a.datesubmitted 
    , a.status 
    from 
    tblrequests a 
    left join tblimportantusers b on (a.userid = b.userid) 
    order by 
    (case when status = 1 and b.userid is not null then 1 else 0 end) desc 
    , date submitted desc 
    , userid desc 
+0

這是完美的。它正是我想要的,我不需要使用聯合。謝謝 –

0

這應做到:

select RequestID, UserID, DateSubmitted, Status 
from (
select r.RequestID, r.UserID, r.DateSubmitted, r.Status, 1 as ind 
from tblRequests r inner join tblImportantUsers u on r.UserID = u.UserID 
order by r.status desc, r.DateSubmitted desc 

union all 

select r.RequestID, r.UserID, r.DateSubmitted, r.Status, 0 as ind 
from tblRequests r left outer join tblImportantUsers u on r.UserID = u.UserID 
where u.UserID is null 
order by r.status desc, r.DateSubmitted desc) 

order by ind desc, DateSubmitted desc, userID 

做一個內連接和左外連接

+0

哦,是的,這是我的錯誤,我實際上使用左連接。 –

+0

@ S.Arzoo,如果這能解決您的問題,請隨時接受。 –

+0

其實它沒有,當我用左連接運行查詢時,它沒有顯示重要用戶在頂部的請求 –

相關問題