2010-06-24 6 views
1

하나의 데이터베이스 테이블에서 원하는대로 데이터를 가져 오기 위해 MySQL 쿼리를 생성하는 데 도움이되는 솔루션을 알고 싶습니다.MySQL 쿼리를 사용하여 고급 필터 문제를 해결하는 방법

Table name: Rates 
Columns: id, date, weekday, costA, costB, costC, sellA, sellB, sellC 
SAMPLE TABLE DATA 
================= 

id | date | weekday | costA | costB | costC | sellA | sellB | sellC 
---------------------------------------------------------------------- 
01 2010/6/1  TUE  120  135  140  150  165 180 
02 2010/6/2  WED  120  135  140  150  165 180 
03 2010/6/3  THU  120  135  140  150  165 180 
04 2010/6/4  FRI  120  135  140  150  165 180 
05 2010/6/5  SAT  120  135  140  150  165 180 
06 2010/6/6  SUN  120  135  140  150  165 180 
07 2010/6/7  MON  120  135  140  150  165 180 
... 
16 2010/6/16 WED  150  140  140  200  220 230 
17 2010/6/17 THU  150  140  140  200  220 230 
18 2010/6/18 FRI  150  140  140  200  220 230 
19 2010/6/19 SAT  150  140  140  200  220 230 
20 2010/6/20 SUN  150  140  140  200  220 230 
21 2010/6/21 MON  150  140  140  200  220 230 
22 2010/6/22 TUE  150  140  140  200  220 230 

내가이 테이블에 대해 수행 할 쿼리는 내가 각 비용의 시작 날짜를 얻을 수 및 열 및 변경 가격의 마지막 날짜를 팔고 싶어한다는 것입니다. 어느 나는 다음과 같은 MYSQL 쿼리와 함께 할 것을 처리 않았다

SELECT * FROM rates ID IN(SELECT MIN(ID) FROM `rates` GROUP BY costA,costB,costC,sellA,sellB,sellC) OR ID IN(SELECT MAX(ID) FROM `rates` GROUP BY costA,costB,costC,sellA,sellB,sellC) 

어떻게 해결해야하는 문제는 지금, 예를 들어 경우, 매주 수요일과 매주 금요일에는 2010/06에서 두 개의 서로 다른 가격이있는 경우/01 ~ 2010/06/16. 그렇다면 아래에 설명 된대로 주중 총 요약을 제공 할 수있는 쿼리를 어떻게 생성합니까?

id | date | weekday | costA | costB | costC | sellA | sellB | sellC 
---------------------------------------------------------------------- 
01 2010/6/1  TUE  120  135  140  150  165 180 
02 2010/6/2  WED  100  100  100  110  120 130 
03 2010/6/3  THU  120  135  140  150  165 180 
04 2010/6/4  FRI  140  150  160  150  175 180 
05 2010/6/5  SAT  120  135  140  150  165 180 
06 2010/6/6  SUN  120  135  140  150  165 180 
07 2010/6/7  MON  120  135  140  150  165 180 
... 
16 2010/6/16 WED  100  100  100  110  120 130 
17 2010/6/17 THU  150  140  140  200  220 230 
18 2010/6/18 FRI  150  140  140  200  220 230 
19 2010/6/19 SAT  150  140  140  200  220 230 
20 2010/6/20 SUN  150  140  140  200  220 230 
21 2010/6/21 MON  150  140  140  200  220 230 
22 2010/6/22 TUE  150  140  140  200  220 230 

위 표에서 생성해야하는 보고서는 다음과 유사해야합니다. 그것은 2010/06/16 비율에 2010/06/01로 위의 표에서 읽어

id | date | weekday | costA | costB | costC | sellA | sellB | sellC 
---------------------------------------------------------------------- 
01 2010/6/1  TUE  120  135  140  150  165 180 
02 2010/6/2  WED  100  100  100  110  120 130 
03 2010/6/3  THU  120  135  140  150  165 180 
04 2010/6/4  FRI  140  150  160  150  175 180 
05 2010/6/5  SAT  120  135  140  150  165 180 
15 2010/6/15 TUE  120  135  140  150  165 180 
16 2010/6/16 WED  100  100  100  110  120 130 
17 2010/6/17 THU  150  140  140  200  220 230 
22 2010/6/22 TUE  150  140  140  200  220 230 

은 다음과 같습니다

WEEKDAY| costA | costB | costC | sellA | sellB | sellC 
    SAT  120  135  140  150  165 180 
    SUN  120  135  140  150  165 180 
    MON  120  135  140  150  165 180 
    TUE  120  135  140  150  165 180 
    WED  100  100  100  110  120 130 
    THU  120  135  140  150  165 180 
    FRI  140  150  160  150  175 180 

와 2010/06/17부터 2010/06/22

WEEKDAY| costA | costB | costC | sellA | sellB | sellC 
    SAT  150  140  140  200  220 230 
    SUN  150  140  140  200  220 230 
    MON  150  140  140  200  220 230 
    TUE  150  140  140  200  220 230 
    WED  150  140  140  200  220 230 
    THU  150  140  140  200  220 230 
    FRI  150  140  140  200  220 230 

이 문제를 해결할 수있는 해결책이 있기를 바랍니다. 간단히 말해, 내가 여기서하려고하는 것은 정기적 인 요율표를 생성하여 평일을 기준으로 비용/판매 가격 세부 정보를 표시하고 모든 비슷한 주간의 시작일과 종료일을 나타내는 동적 날짜 기간으로 그룹화하는 것입니다.

+0

'평일까지 전체 요약을 줄 수있는 쿼리'- 평일 기준으로 보고서 예가 어떻게 표시되는지 확인하지 못했습니다. 더 자세히 설명해 주실 분? –

+0

아래 두 테이블을 보면 날짜 기간 내의 각 요일별 가격이 표시됩니다 (날짜 기간은 날짜의 모든 가격 변경에 따라 다릅니다). 쿼리에서 출력하려는 ​​결과는 아래 두 테이블과 같아야합니다. 간단히 말해서, 평일과 해당 날짜 기간을 기준으로 가격을 표시 할 수있는 첫 번째 테이블에서 결과를 얻고 싶습니다. 입력 된 일일 가격에 따라 생성되는 요율표와 같은 것입니다. 내 생각이 분명해 지길 바래. 필요한 경우 더 설명 할 수 있습니다. Jonas에게 감사드립니다. – Raf

답변

0

필요한 조치는 무엇입니까?

select weekday,costA,costB,costC,sellA,sellB,sellC, min(date) from_dt, max(date) to_dt 
from rates 
group by weekday,costA,costB,costC,sellA,sellB,sellC 
관련 문제