2012-03-23 4 views
1

열로 그룹화 된 모든 데이터 집합에 대해 가장 낮은 값을 반환하려고합니다.MySQL - 그룹 하나의 열에 의해 낮은 값을 얻을

영어로 거주지별로 데이터를 그룹으로 정리하고 각 숙박 시설의 최저 perperson 가격 만 반환하고 싶습니다.

나는이 거의 작업 보이지만, 가장 낮은 ID 대신 perperson에 의해 기록을 반환 MySQL Group By get title column with smallest date value


SELECT t1 . * FROM tbl_TravelFeed AS t1 
    INNER JOIN 
    (SELECT pk_id, MIN(perperson) AS perperson FROM tbl_TravelFeed 
     GROUP BY accommodation 
     ORDER BY perperson) AS t2  
    ON t1.pk_id = t2.pk_id AND t1.perperson = t2.perperson 

에서 유사한 예 (아래에 내 시도를) 발견했다. 나는 왜 그것을 고칠 수 있는지 이해할 수 없다.

화요일 (12 월 12 일) 화요일에 대학 과제물을 끝내려고 노력 중이며 제대로 작동하기를 원하지만 더 큰 그림에서는 중요하지 않습니다.

저는 Distinct를 사용하는 것을 포함하여 여러 가지 방법을 시도했습니다. 위의 쿼리가 가장 가까운 것 같습니다.

도움이 필요하시면 매우 감사드립니다.

아론

+2

@Cfreak 왜 숙제 태그를 제거? OP는 이것이 대학 과제라고 말합니다. – jzworkman

+0

@jzworkman 내가 우연히 그랬다면. 쿼리를 정리하려고 시도했습니다. – Cfreak

답변

0

매우 가깝습니다. 당신이 숙박 시설로 그룹화되어 있기 때문에, 내부 테이블과 외부 테이블에서 해당 링크는 accommodation 필드,하지 pk_id입니다 :

(SELECT accommodation, MIN(perperson) AS perperson FROM tbl_TravelFeed 
    GROUP BY accommodation 
    ORDER BY perperson) AS t2 
ON t1.**accommodation** = t2.**accommodation** AND t1.perperson = t2.perperson 
+0

이것은 매우 감사합니다. 동일한 최저값을 가진 여러 레코드가있는 상황을 처리해야합니다. – asest

2

이 안된하지만 난 당신에게, MySQL의에서 이유를 작성합니다 어떻게 WHERE 문에 내 하위 쿼리를 넣으면이 쿼리에서 VIEW를 쉽게 만들 수 있고 결과를 별도의 뷰에 저장하여 쿼리를 만들 수 있습니다.

SELECT * FROM tbl_Travelfeed AS t 
WHERE perperson = 
(
    SELECT MIN(perperson) 
    FROM tbl_Travelfeed 
    WHERE accommodation = t.accommodation 
) 
0
SELECT t.* 
FROM 
     tbl_TravelFeed AS t 
    INNER JOIN 
     (SELECT accommodation 
       , MIN(perperson) AS perperson 
      FROM tbl_TravelFeed 
      GROUP BY accommodation 
     ) AS g 
     ON g.accommodation = t.accommodation 
     AND g.perperson = t.perperson 
관련 문제