2013-08-30 3 views
8

"> ="및 "= <"이있는 조건을 쿼리해야하지만 운이 없습니다. 이것은 CODEIGNERER에 있습니다.'크거나 같음'및 '작거나 같음'CODEIGNITER

이 MySQL의 쿼리에서 자연적인 방법입니다 :

SELECT COUNT(payment.keyid) AS rec_count, `product_key`.`client_name`, 
`product_key`.`contact_email`, `product_key`.`status`, `product_key`.`id`, 
`payment`.`paymentdate`, (payment.id) as pid, `payment`.`subscription_type` 
FROM (`product_key`) 
LEFT OUTER JOIN `payment` ON `payment`.`keyid`=`product_key`.`id` 
WHERE `payment`.`paymentdate` >= '2013-08-01' 
    AND `payment`.`paymentdate` =< '2013-08-31' 
    AND `status` = 'purchased' 
GROUP BY `product_key`.`id` 
ORDER BY `client_name` asc 

는 그리고 이것은 내가 가진 무엇 :

return $this->db 
    ->select('COUNT(payment.keyid) AS rec_count') 
    ->select('product_key.client_name, product_key.contact_email, product_key.status, product_key.id, payment.paymentdate, (payment.id) as pid,payment.subscription_type') 
    ->from('product_key')   
    ->where('payment.paymentdate >=', $month_start) 
    ->where('payment.paymentdate =<', $month_end) 
    ->where('status', 'purchased') 
    ->join('payment', 'payment.keyid=product_key.id', 'left outer') 
    ->order_by('client_name', "asc") 
    ->group_by('product_key.id') 
    ->get() 
    ->result(); 

어쩌면 사람이 나를 도울 수 있습니다. 감사.

+0

처럼 쓸 수 있습니다 당신이 사이에 사용하여 시도해 봤어에서 ?? –

+0

또는 하드 코드 된 날짜를 명시 적으로 변환하십시오. –

+0

@ ashutosh-arya 이전에 사용한 적이있는 적이 없었습니다. 특히 이제는 프레임 워크로 codeigniter를 사용하고 있습니다. 하지만 지금은 어떻게 사용할지 검색해 보겠습니다. 조언 감사합니다. –

답변

7

=<<=으로 변경하십시오.

나는 phpMyAdmin에서 현재 쿼리를 테스트했다. 왜냐하면 나는 그것이 오류를 던지지 않는다고 믿을 수 없기 때문이다. 그러나 내 것이 그것을한다. 따라서 phpmyadmin에서 쿼리가 작동하지 않아야합니다.

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=< ...' at line ... 
+0

예, 지금 발견했습니다. 내 부주의 한 사과. 모두 도움을 주셔서 감사합니다! :) –

0

시도 :

$this->db 
->select('COUNT(payment.keyid) AS rec_count, product_key.client_name, product_key.contact_email, product_key.status, product_key.id, payment.paymentdate, (payment.id) as pid, payment.subscription_type', false) 
->from('product_key') 
->join('payment', 'payment.keyid=product_key.id', 'LEFT OUTER') 
->where('payment.paymentdate >=', '2013-08-01') 
->where('payment.paymentdate =<', '2013-08-31') 
->where('status', 'purchased') 
->group_by('product_key.id') 
->order_by('client_name', 'asc') 
->get(); 
+0

나는 그것을하고 싶지만 나는 할 수 없다. 내 변수는 현재 날짜에 따라 다릅니다. –

5

시도가

->where('payment.paymentdate >=', $month_start) 
->where('payment.paymentdate <=', $month_end) 

그리고 더 나은처럼 <==<을 변경하지만 어디 condition.Now 쿼리하기 전에 테이블을 가입 cumpolsury하지 않도록 이어야합니다.

->select('COUNT(payment.keyid) AS rec_count') 
->select('product_key.client_name, product_key.contact_email, product_key.status, product_key.id, payment.paymentdate, (payment.id) as pid,payment.subscription_type') 
->from('product_key')   
->join('payment', 'payment.keyid=product_key.id', 'left outer')  
->where('payment.paymentdate >=', $month_start) 
->where('payment.paymentdate <=', $month_end) 
->where('status', 'purchased') 
->order_by('client_name', "asc") 
->group_by('product_key.id') 
->get() 
+0

원본 SQL에 'OR'이 포함되어 있지 않습니다. -? –

+0

@Gautam : 롤백 한 다음 나중에 다시 추가 하시겠습니까? 왜? –

+0

사실 나는 그에게 or_where를 사용하라고 제안하고 싶지만 그에게는 유용하지 않을 수 있습니다 ... 나는 thax를 편집했습니다. – Gautam3164

0

내가 무엇을 알고,이

$this->db->select('COUNT(payment.keyid) AS rec_count, product_key.client_name, product_key.contact_email, product_key.status, product_key.id, payment.paymentdate, (payment.id) as pid, payment.subscription_type', false); 
$this->db->where('payment.paymentdate >= "2013-08-01"'); 
$this->db->where('payment.paymentdate <= "2013-08-31"'); 
$this->db->where('status', 'purchased'); 
$this->db->group_by('product_key.id'); 
$this->db->order_by('client_name', 'asc'); 
$this->db->join('payment', 'payment.keyid=product_key.id', 'LEFT OUTER') 
$this->db->get('product_key'); 
관련 문제