2014-11-20 5 views
0
$q2 = "SELECT startdate, 
      GROUP_CONCAT(summary separator '<br />') as summary, 
      GROUP_CONCAT(TIME(startdate)) AS starttime, 
      GROUP_CONCAT(TIME(enddate)) AS endtime 
      FROM oc_clndr_objects 
      WHERE calendarid = $calID 
      GROUP BY DATE(startdate) 
      ORDER BY startdate ASC"; 

위의 쿼리는 하나의 결과 (예상 한대로 1 개의 날짜에 대해 3 개의 이벤트) 만 반환합니다. 그러나 매일 반복되는 하나의 이벤트가 있고 쿼리가 넘어 가지 않습니다 첫 번째 출발일.MySQL GROUP BY 쿼리는 하나의 행만 반환합니다.

GROUP BY 절과 관련이 있고 집합 함수에 대해 뭔가 알고 있지만 주위를 감쌀 수는 없습니다. - 출력은 http://www.deliriousdreams.co.uk/ - "DJ Schedule Test"에 표시됩니다.

약간 불법적 인 SQL 쿼리를 수정하는 데 도움이되는 사항에 많은 도움이 될 것입니다.

편집 : 좋아, 그루비 인들이 DATE (시작일) AS 시작일로 개정되었습니다. 하나의 작은 웃음, 그 후 나는 DATE와 TIME (가장 빠른 것부터) 순으로 정렬 할 수 있기를 원합니다. - 분명히 DATE와 TIME은 모두 startdate (DATETIME 스탬프)에서 파생됩니다. 위의 쿼리를 수정하여 가능합니까? 나는 PHP 마술을해야만합니까?

+0

'GROUP BY'는 'SELECT'목록과 다릅니다. 이 작업을 의도 한대로하려면'SELECT DATE (startdate)'를 사용해야 할 것이다. –

+0

시작 날짜 대신 DATE (시작 날짜)를 선택하십시오. – Jaylen

+0

StartDate는 datetime 일 수 있습니다. 시간은 기록마다 다를 수 있습니다. 다른 사람들이 그것을 날짜로 바꾸라고 말하면서 시간을 줄이면, 그룹은 그 때 일해야합니다. – xQbert

답변

0

을 될 수 있으며이 이루어집니다 깨끗한 변수가 나는 $calID 희망이

  SELECT DATE(startdate) AS startdate, 
     GROUP_CONCAT(summary separator '<br />') as summary, 
     GROUP_CONCAT(TIME(startdate)) AS starttime, 
     GROUP_CONCAT(TIME(enddate)) AS endtime 
     FROM oc_clndr_objects 
     WHERE calendarid = $calID 
     GROUP BY DATE(startdate) 
     ORDER BY startdate ASC 

에 검색어를 변경해보십시오! 이것은 내가 찾고있는 해결책입니다 ...

SELECT 
     DATE(startdate) AS startdate, 
     GROUP_CONCAT(summary separator '<br />') as summary, 
     GROUP_CONCAT(TIME(startdate)) AS starttime, 
     GROUP_CONCAT(TIME(enddate)) AS endtime 
FROM 
     (SELECT * FROM oc_clndr_objects ORDER BY startdate ASC) AS temp 
WHERE calendarid = $calID 
GROUP BY DATE(startdate) 
ORDER BY DATE(startdate) ASC 
0

당신은 STARTDATE을 선택하지만, 필드 STARTDATE가 날짜이며, 당신은 단지 당신이 날짜를 기준으로 데이터와 그룹을 선택해야합니다 날짜별로 그룹화 할 경우 DATE(startdate)

에 의해 그룹화된다.

그렇지 않으면 코드가 SQL 인젝션

+0

$ calID는 순전히 이전 SQL 쿼리에서 가져온 int입니다. 나는 당신의 답을 테스트하지 않았다. (나는 할 것이다.) - 그것은 ownCloud 데이터베이스에서 데이터를 가져 오는 것과 관련된 문제로 판명된다 - 반복되는 이벤트는 반복되는 날짜에 표시되지 않고 단지 초기 날짜이므로 반영되지 않는다. 일정. 그렇지 않으면 내 기존 쿼리가 정상입니다. –

+0

그런데, 나는 제안 된 변화를 만들었다. –