2013-02-22 4 views
-2

3 가지 조건으로 주문을 정렬하는 방법을 찾고 있습니다. 문제가없는 두 가지를 얻을 수 있습니다. 예 테이블 :3 열로 표 정렬

Buyer Qty Item_ID 
James 1 12345 
Jack 1 34564 
John 3 13445 
Kevin 1 83243 
Bill 2 23434 
Jack 3 23423 

그래서 여기에 트릭은, 첫 번째 그룹의 구매자에게
입니다 후 수량 는

잭이 다음 그룹화 뽑아 의 나머지를 함께 제공해야 할 두 가지 주문을 가지고 ITEM_ID 주문은 출력이 될 것이다 다음 ITEM_ID

으로 분류 수량별로 그룹화 할 필요가 같은 :

Buyer Qty Item_ID 
Jack 1 34564 
Jack 3 23423 
James 1 12345 
Kevin 1 83243 
Bill 2 23434 
Bob 2 23444 
John 3 13445 

구매자가 여러 주문에 대해 그룹으로 묶일 필요가 없습니다. sort by qty, item_id separated Jacks 주문. 우리는 같은 구매자로부터 하루에 100 장의 주문을 받는다. 같은 수의 항목이있는 주문은 item_id로 정렬되어 방의 한쪽 끝에서 다른 끝까지 스톡을 줄이는 작업을 단순화해야합니다. 구매자를 그룹화하는 것은 효과가 있지만 아직 이해하지 못한 것 같습니다.

select * FROM orders 
    WHERE printed = 0 
    AND status = 'completed' 
    AND address_name <> '' 
    group by buyer 
    ORDER BY qty, id; 

이 쿼리는 같은 구매자로부터 여러 개의 주문을 건너 뛰고 나머지는 제대로 분류되어 있습니다 :

지금까지 가장 합리적인 쿼리

.

답변 1을 성공적으로 구현했습니다. 감사합니다.

+2

시도한 검색어가 있습니까? –

+0

나는 '구매자, 수량, item_ID'에 의한 주문이 "그룹화"가 아니라는 생각이 잘못 되었습니까? 예상 출력물도 유용 할 것입니다. – xQbert

+0

첫 번째 질문에 대한 답변을 얻길 바랍니다. 그래서, 당신은 그 대답을 받아 들였을 것입니다. 다른 질문이있는 경우 기존 해결 된 문제를 자세히 작성하지 않고 새 질문을 만드는 것이 좋습니다. 이 질문과 답변의 혜택을 누릴 수있는 것은 아닙니다. 그래서 그 형식으로 유지하고 다른 스레드가 스레드를 활용할 수 있습니다. Btw, 오류 자체 설명입니다. paypal_ipn_orders 테이블에 item_number 열이 없습니다 (item_id 일 수 있음을 확인하십시오). – chandimak

답변

1

다음 쿼리를 사용하면 필요한 정확한 결과를 얻을 수 있습니다. 내부 조회에서 동일한 구매자 인스턴스의 수를 생성합니다. 그런 다음 구매자 컬럼에서 원래 테이블과 조인합니다. 그런 다음 동일한 구매자 인스턴스가 내림차순으로 계산되고 다른 열이 오름차순으로 정렬됩니다.

SELECT table1.buyer, qty, item_id 
FROM orders table1, 
    (SELECT buyer, COUNT(*) as count FROM orders GROUP BY buyer) as table2 
    WHERE table1.buyer = table2.buyer 
    ORDER BY count DESC, qty, item_id; 

이 내용은 fiddle을 참조하십시오.