"Больше или равно" и "меньше или равно" 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'");