2016-12-06 1 views
1

status 열이 다음과 같은 가능한 값인 Inventory 테이블이 있다고 가정합니다. voided, to_order, priority, received 및 ordered.sqlalchemy를 사용하여 목록으로 결과를 정렬하려면 어떻게합니까?

나는 데이터베이스를 조회 할 때 나는이 순서의 상태 열을 주문하고 싶습니다

to_order, priority, received, ordered, voided. 

을 어떻게 목록 순서에 의해 내 결과를 정렬 할 SQLAlchemy의 사용합니까?

필자의 출발점은 sort = desc(Inventory.status)이며, 내 자신의 정렬 순서를 정의하는 것에 대해 알지 못합니다.

+0

이 순서가 재사용되는 경우,'name' 및'sort_order'와 같은 컬럼을 포함하는'InventoryStatus' 테이블을 생성 (또는 확장)하는 옵션이 있습니다. 그런 다음 쿼리가이 테이블에 조인되고 조인 된 테이블의 열로 결과를 정렬 할 수 있습니다. 나는 종종 다른 목적으로 사용되는 다른 한정자/플래그 열을 가지고 있습니다. 예를 들어, 사용자 액션이 필요 없음을 나타 내기 위해 플래그'completed' ('received' 및'voided'에 대해 True입니다)를 가질 수 있습니다. – van

답변

0

ORDER BY + CASE 조합을 사용해야합니다.

먼저 순수 SQL에 대해 말하면, this example을보십시오.

ORDER BY (
    CASE currency_code 

    WHEN 'USD' 
    THEN 1 

    WHEN 'EUR' 
    THEN 2 

    ... 

    END 
) ASC 

다행히도 order_bycase을 결합, SQLAlchemy의의 ORM 정확하게이 작업을 수행 할 수 있습니다.

관련 문제