2012-03-26 4 views
0

카운트 이후 관련 기록 레코드를 나열합니다 (이 질문의 목적을 위해) :MySQL의 쿼리는 내가 3 개 필드 송장을 테이블을 불렀다

invoice_id, company_id, invoice_stamp 

invoice_id는 PK, company_idinvoice_stamp가 인덱스입니다 정수 형식의 유닉스 타임 스탬프.

저는 송장 목록을 얻는 가장 좋은 방법을 찾고 있지만 각 인보이스 옆에 일치하는 company_id가있는 송장 수와 현재 인보이스보다 많은 invoice_stamp가 있습니다.

그래서 자체적으로 조인이 필요하지만 FROM 절의 파생 테이블이든 또는 INNER JOIN 또는 LEFT JOIN이든 상관없이이를 구성하는 방법을 완전히 알 수는 없습니다.

invoice_id | company_id | future invoice count 
----------------------------------------------- 
1001  | 12345  | 5 
1002  | 67890  | 5 
1003  | 67890  | 4 
1004  | 67890  | 3 
1005  | 12345  | 4 
1006  | 12345  | 3 
1007  | 12345  | 2 
1008  | 67890  | 2 
1009  | 67890  | 1 
1010  | 12345  | 1 
1011  | 12345  | 0 
1012  | 67890  | 0 

은 MySQL과 그게 가능 아니면 내가 MySQL 클라이언트 측에서 이런 일을 처리해야

그래서 내 출력은 희망이 같을까요?

누구나 아이디어가 있습니까?

답변

1

당신은

SELECT invoice_id, company_id, 
    (SELECT count(invoice_id) 
     FROM invoice i2 WHERE i2.invoice_stamp > i.invoice_stamp) 
    AS future_invoice_count 
FROM invoice i; 
+0

방, 문제가 해결됩니다 하위 선택과 그것을 할 수 (안된하지만 작동합니다)! 하위 선택 ... 나는 항상 그걸 잊어 버린다. 건배, 그게 흔들어 :) – batfastad