2013-05-03 3 views
0

Codeigniter의 db 쿼리에 대한 약간의 질문이 있습니다. (기준 주문) 코드의 위 부분에서Codeigniter의 db 쿼리. (주문)

$this->db->select('*, MONTH(date) as mnth'); 
$this->db->where('school_id', $school_id); 
$this->db->group_by('MONTH(date)'); 
$this->db->order_by('date', 'desc'); 
$query = $this->db->get('events'); 

내가 매달에 대한 이벤트를하고 싶지만 나에게 매월 첫 번째 이벤트를 반환은 ... 나는 PHP 루프 그것을 시도했지만 내가 원하는 그것은 루프없이 .. 좋은 반응을 바라고 있습니다.

안부

무하마드 사우드는

+0

'GROUP BY'가'ORDER BY '가 아닌 쿼리를 망치고 있습니다. 그 이유를보기 위해 문서를보십시오. –

+0

답장을 보내 주셔서 감사합니다. 나는 그것을 들여다 보았다. 거기에 내 문제와 관련이 없다. 내 문제를 이해했다면, 가능한 한 대답을 제안 해주세요. 감사합니다. –

답변

1

GROUP BY 한 행에 매개 변수와 일치하는 열 값을 모두 집계됩니다. 일반적으로 문에서 SUM과 같은 집계 함수를 GROUP BY과 같이 사용해야합니다. 집계 함수와 함께 사용되지 않는 열을 선택하는 경우 GROUP BY에 포함 할 수 있습니다. 나는 당신이 달성하고자하는 것을 정확하게 모르겠다. 그러나 나는 GROUP BY이 당신이 기대하는대로하고 있다고 생각하지 않는다. 아마 그것을 제거하려고 시도 할 것이다.

+0

감사합니다. Lefters, 나는 'Events'라는 테이블이 있는데 여기에는 날짜가있는 일부 이벤트가 포함되어 있습니다. DB 쿼리 만 사용하여 매월 이벤트를 개별적으로 얻고 싶습니다. for 루프를 사용하여이 작업을 수행했지만 많은 양의 데이터가 있으면 결국 느려집니다. 이에 대한 해결책을 제안하십시오. –

+0

걱정할 필요가 없습니다. 'group_by'를 제거하고 지정된 달을 매개 변수로 받아들이고 그 달을 기준으로 결과를 필터링하는'where'를 추가하십시오. 현재 생성중인 결과와 얻을 것으로 예상되는 결과를 게시 한 경우 도움이 될 수 있습니다. – jleft

+0

다음과 같이하고 싶습니다. $ events [ 'januaray'] = 1 월의 이벤트 배열 $ events [ 'februaray'] = 2 월의 이벤트 배열 $ events [ 'martch'] = 마트의 이벤트 배열 등등 .... $ 이벤트 배열을 대가로 원합니다. –