"Больше или равно" и "меньше или равно" CODEIGNITER

Я должен запросить что-то, у которого есть условие where с >= и =< но мне не повезло. Это в СОГЛАСОВАНИИ.

Это естественный способ в запросе 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(); 

Может быть, кто-то мог бы помочь мне в этом. Благодарю.

Ответ 1

Измените =< на <=.

Я также проверил ваш текущий запрос в 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 ...

Ответ 2

Попробуйте изменить =< на <= как

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

И лучше, но не cumpolsury, чтобы присоединиться к таблице до условия where.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()

Ответ 3

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();

Ответ 4

из того, что я знаю, вы можете написать их вот так

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

Ответ 5

$this->db->where("DATE_FORMAT(ph_payment_date, '%d-%m-%Y') BETWEEN '$startdate' AND '$enddate'");
$this->db->where("DATE_FORMAT(ph_payment_date, '%d-%m-%Y') >= '$startdate'");
$this->db->where("DATE_FORMAT(ph_payment_date, '%d-%m-%Y') <= '$enddate'");