2013-12-22 3 views
3

나는 다음과 같은 테이블이 있습니다PHP는 MySQL의 우선 순위에 의한 순서와 순위는

가 지금은 속성 테이블에서 행을 추출 할 :

Properties 
id  agency_id  refno 
1  1   AA101 
2  3   AA201 
3  2   AA501 
4  1   AA762 
5  3   AA555 

agency 
agency_id  agency_name  priority 
    1    A    30 
    2    B    10 
    3    C    20 

나는 기관 테이블에있는 각 기관의 우선 순위를 정의 순위와 우선 순위에 따라 제 1 기관에서 제 1 행, 제 2 기관에서 1 행, 제 3 기관에서 1 행 등을 추출하고 싶습니다.

그런 다음 1 차 대행사의 2 번째 줄, 2 번째 대행사의 2 번째 줄, 3 번째 대행사의 두 번째 줄 등등.

그런 다음 각 기관의 우선 순위에 따라 전체 결과를 정렬하려고합니다. 미세한 오류가없는 나는 다음과 같은 조항을 사용하고 있지만 내가 조인을 넣어 가지고 원하는 결과를

select properties.id, 
     properties.agency_id, 
     IF(@prev <> properties.agency_id, @cnt := 1, @cnt := @cnt + 1) AS rank, @prev := properties.agency_id, 
     properties.refno 
where properties.agency_id = agency.agency_id 
     order by agency.priority, rank 

을주지 않고, 그 작업. 하지만 다음과 같은 결과가 필요합니다 :

나는 기관 테이블에 각 기관의 우선 순위를 정의했습니다. 쿼리가 조인과 함께 잘 작동합니다. 다음과 같은 결과가 필요합니다.

agency2 row1 
agency3 row1 
agency1 row1 

agency2 row2 
agency3 row2 
agency1 row2 

agency2 row3 
agency3 row3 
agency1 row3 

대행사 표 및 순위에 정의 된 우선 순위에 따라 결과가 필요합니다.

+0

각 속성에 우선 순위를 어떻게 할당합니까? SQL 테이블은 본질적으로 정렬되어 있지 않으므로이 정보를 명시 적으로 포함하는 열이 있어야합니다. –

+0

결과를 이상적으로 보이게 할 테이블을 제공 할 수 있습니까? 나는 그 질문을 이해하고 있는지 확신 할 수 없다 ... –

+1

당신은'FROM' 절을 빠뜨린 채 그것을 추가하고 대신'JOIN'을 사용하고 [실행]한다. (http://www.sqlfiddle.com/#!2/4ea24e/8) 그러나 이것이 당신이 찾고있는 것인지 아닌지 확실하지 않습니다. –

답변

1

쿼리가 두 테이블을 join해야 JOIN

의 concpet 통해 이동하시기 바랍니다.

select 
    properties.id, 
    properties.agency_id, 
    IF(@prev <> properties.agency_id, @cnt := 1, @cnt := @cnt + 1) AS rank, 
    @prev := properties.agency_id, 
    properties.refno 
FROM properties 
INNER JOIN agency ON properties.agency_id = agency.agency_id 
order by agency.priority, rank 
+0

ROW1 내가 조인 사용했다,하지만 여전히이 욕망의 결과를 보여주는 없습니다. 다음과 같은 순서가되어야한다 agency2 ROW1 agency3 ROW1 agency1 ROW1 agency2 ROW2 agency3 ROW2 agency1 ROW2 agency2 row3 agency3 row3 agency1 row3 등 기관 –

+0

에를 각 그룹 별 단 하나의 행만 보여주기 위해 그룹 별 대행사 ID – rjv

+0

그룹을 시도하십시오. 나는 각 그룹에서 끝까지 모든 행을 보여주고 싶다. –

관련 문제