2013-01-13 3 views
0

내 DB에서 다음과 같이 나오는 날짜 필드가 있습니다. 추신 : 여기에 조인을 사용하여 날짜 테이블의 날짜를 가져 오는 쿼리가 많이 있습니다.MYSQL group_concat with 및

SELECT event,event_name, 
GROUP_CONCAT(DATE_FORMAT(ed.date,'%b %e') ORDER BY ed.date SEPARATOR ',') as date2 
FROM events ev 
LEFT JOIN event_dates ed ON ev.eid=ed.eid 
WHERE ev.yr='2013' 
GROUP BY ev.eid 

이렇게하면 많은 공간을 차지하는이 날짜 목록이 생성됩니다.

May 16,May 23,May 30,Jun 6,Jun 20 

는 나는 여기

May 16,23,30,Jun 6,20 

내가 노력 쿼리처럼보고 싶다. 하위 쿼리가 이벤트 ID를 알지 못하기 때문에 작동하지 않습니다. 내가 그것을 조인으로 변환해야 할 수도 있습니다 추측 ??)

SELECT DISTINCT ev.event_id, 
GROUP_CONCAT(DISTINCT DATE_FORMAT(race_date,'%a') ORDER BY race_date 
SEPARATOR ', ') as date1, 

(SELECT GROUP_CONCAT(dm) FROM 
(SELECT CONCAT(
    MONTHNAME(race_date), 
    ' ', 
    GROUP_CONCAT(DAY(race_date) ORDER BY race_date) 
    ) as dm 
FROM event_dates ed1 WHERE ed1.event_id=ev.event_id 
GROUP BY MONTH(race_date))as t) as date2 

FROM events ev 
JOIN event_dates ed ON ev.event_id = ed.event_id AND ev.race_year = ed.race_year 
GROUP BY event_id 
+1

'IF'는 쿼리와 함께 무엇을해야합니까? – bonCodigo

+0

@bonCodigo : 아마도 월이 이미 포함되어 있다면 ... * – eggyal

+0

@eggyal hmm ... :)'Month (date)에 의한 그룹'은 중복을 제거하지 않습니다 ... – bonCodigo

답변

2
SELECT GROUP_CONCAT(d) FROM (
    SELECT CONCAT(
       MONTHNAME(date), 
       ' ', 
       GROUP_CONCAT(DAY(date) ORDER BY date) 
      ) AS d 
    FROM  my_table 
    GROUP BY MONTH(date) 
) t 
+0

흥미 롭다면 원래 게시물에 더 많은 쿼리를 추가했지만 어떻게 작동하는지 알 수있었습니다. – davewhirlwind

+0

행운은 아직 내 원래 게시물에서 시도한 코드를 참조하십시오. – davewhirlwind

+0

@davewhirlwind : 주어진 이벤트의 모든 날짜가 같은 요일에 보장 되나요? – eggyal