2013-08-30 3 views
8

Мне нужно запросить то, что имеет условие где «> =» и «= <», но мне не повезло. Это в CODEIGNITER.«Больше или равно» и «меньше или равно» CODEIGNITER

Это естественный путь в MySQL Query:

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

Try:

$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) 

И лучше но не cumpolsury присоединиться к таблице до где condition.Now запроса должно быть равным

->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'); 
Смежные вопросы