使用连接/子查询获取具有最高优先级的详细信息

时间:2013-09-24 15:44:25

标签: sql sql-server sql-server-2005

我希望你能帮我解决这个问题:我有三张桌子,类似于:

ORDER
Order_ID | Order_Date
=====================
       1 | 01/01/2001
       2 | 02/01/2001
       3 | 03/01/2001
       4 | 04/01/2001
       5 | 05/01/2001

ORDER_DETAIL
Order_Detail_ID | Order_ID | Status_ID
======================================
              1 |        1 |         1
              2 |        1 |         1
              3 |        1 |         2
              4 |        2 |         2
              5 |        2 |         3
              6 |        3 |         3
              7 |        3 |         3
STATUS
Status_ID | Status_Name | Status_Priority
=========================================
        1 | PENDING     |              3
        2 | COMPLETED   |              2
        3 | CANCELLED   |              1

现在,正如我想的那样,ORDER_DETAIL表中的每一行都使用Order_ID与ORDER表相关,并且它还具有Status_ID指示的状态。此外,STATUS表具有Status_Priority列。我需要做的是显示每个订单,以及其他列,每个订单的订单详细信息中具有最高优先级的状态,如下所示:

Order_ID | Order_Date | Status_Name
===================================
       1 | 01/01/2001 | PENDING
       2 | 02/01/2001 | COMPLETED
       3 | 03/01/2001 | CANCELLED
       4 | 04/01/2001 |
       5 | 05/01/2001 |

在这种情况下,例如,由于Order_ID 1至少有1个具有PENDING状态的Order_Detail_ID,它在其具有的详细信息中具有最高优先级,即出现的那个。我尝试使用带有子查询的JOIN,基于类似的代码,但我似乎无法适应这种情况。任何帮助都感激不尽。提前谢谢。

1 个答案:

答案 0 :(得分:0)

选择列,按order_id连接表,按Status_Priority排序