使用带有点燃数据表的Join查询尝试获取具有两个条件的位置

时间:2014-08-28 22:34:21

标签: sql codeigniter datatables where

我正在尝试使用codeigniter从mysql数据库中提取数据并点燃数据表。我没有麻烦用单个where子句拉取连接查询,但是当我尝试添加WHERE x OR y时,我似乎无法使其工作。以下是可以正常使用的基本代码:

$table = 'test_base';
$table2 = 'lab';
$this->datatables->select('test_base.idlab');       
$this->datatables->from($table);
$this->datatables->join($table2, 'test_base.idlab = lab.idlab');
$this->datatables->where('lab.idaccount',$idaccount);

如果我想在查询中添加多个条件,我可以从manual看到我可以在数组中放置多个条件,但这似乎只能执行AND,而不是OR语句。

然后我看到我可以使用以下内容创建自己的SQL查询:

$this->datatables->where('column != "string"');

所以,我试过这个:

$this->datatables->where("`lab`.`idaccount`= $idaccount OR `lab`.`idlab` = 0");

SELECT `test_base`.`idlab`
FROM (`test_base`)
JOIN `lab` ON `test_base`.`idlab` = `lab`.`idlab`
WHERE `lab`.`idaccount`=` 124 OR `lab`.`idlab` = 0
ORDER BY `idtest` asc

问题是在WHERE`lab`中有一个额外的(`)。在一个地方,我不确定如何摆脱它。

1 个答案:

答案 0 :(得分:1)

正如@Ehecatl建议的那样,我通过在()中输入完整的查询来实现它。 CodeIgniter网站上或我能找到的任何其他地方都没有示例。 CodeIgniter还是新手,所以也许这对其他人也有帮助。

解决方案是将查询字符串放在$ this-> datatables-> where();并删除所有单引号。

$this->datatables->where("lab.idaccount = $idaccount OR lab.idlab = 0");