0

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

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,基于我拥有的类似代码,但我似乎无法使其适应这种情况。任何帮助都感激不尽。提前致谢。

4

1 回答 1

0

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

于 2013-09-24T15:49:50.087 回答