【发布时间】:2020-11-05 15:44:33
【问题描述】:
我的桌子
这是我的表,我必须使用多个 where 条件显示数据。首先我选择使用 dms_expire_date,为此我得到了答案,我在 where 条件下使用 dms_doc_name 但我没有得到正确的结果。
到目前为止我已经累了。
如果我在“where”中使用“或”,请查看这张图片
我不知道该怎么做。请帮忙解决这个问题。
SELECT * FROM `dms_document` WHERE dms_expire_date BETWEEN '2020-05-01' AND '2020-07-16' AND dms_doc_name = '' OR dms_category_id = '' OR dms_subcategory_id=''
我也厌倦了阵列,但我没有结果。
$this->db->select('*');
$this->db->join('dms_category as C', 'C.dms_category_id = D.dms_category_id', 'left outer');
$this->db->join('dms_sub_category as S', 'S.dms_subcategory_id = D.dms_subcategory_id', 'left outer');
$this->db->where('dms_expire_date >=', $newstart);
$this->db->where('dms_expire_date <=', $newend);
$this->db->where(array('dms_doc_name' =>$docname,'D.dms_category_id'=>$category,'D.dms_subcategory_id'=>$subcategory));
$data['documents']= $this->db->get('dms_document as D')->result_array();
【问题讨论】:
-
括号 () 最有可能出现问题,但是您期望得到什么结果?当你有
dms_doc_name = ''、dms_category_id = ''、dms_subcategory_id = ''时你想看什么 -
如果我在给定的 dms_expiriy 日期内给 doc_name 中的 testie 并且结果应该会来
-
tbh,我还是没有得到你想要的
-
是的,但结果显示我想要 0 行
-
为了澄清你真正想要的逻辑,我建议在
... WHERE x AND y AND (z OR a OR b)与... WHERE x AND (y AND z) OR (a OR b)这样的不同查询之间添加括号。
标签: mysql codeigniter