Php Codeigniter 2多连接和where语句
更新代码Php Codeigniter 2多连接和where语句,php,mysql,sql,join,codeigniter-2,Php,Mysql,Sql,Join,Codeigniter 2,更新代码 $office = $this->session->userdata('department'); $query = "SELECT `doc`.`id`, `doc`.`barcode`, `doc`.`sub`, `doc`.`source_type`, `doc`.`sender`, `doc`.`address`, `doc`.`description`, `doc`.`receipient`, `doc`.`status`, DATE_FORMAT(`doc`.
$office = $this->session->userdata('department');
$query = "SELECT `doc`.`id`, `doc`.`barcode`, `doc`.`sub`, `doc`.`source_type`, `doc`.`sender`, `doc`.`address`, `doc`.`description`, `doc`.`receipient`, `doc`.`status`, DATE_FORMAT(`doc`.`datetime_added`, '%m/%d/%Y-%h:%i %p') as datetime_added,
(SELECT GROUP_CONCAT(`tag`) FROM `tags` WHERE `tags`.`documentId` = `doc`.`id` GROUP BY `tags`.`documentId`) as `tags`
FROM `documents` AS `doc`
JOIN `transactions` AS `trans` ON `doc`.`id` = `trans`.`document_id`
JOIN `trackers` AS `track` ON `doc`.`id` = `track`.`document_id`
WHERE `doc`.`status` = 'Processing'
AND `track`.`action` = '1')
AND `track`.`location` = '$office'
ORDER BY `doc`.`id` DESC";
$go = $this->db->query($query)->result_array();
var_dump($go); exit();
我试图完成的是显示位于我们办公室的所有文档,这些文档正在处理,并且具有操作1。文件可能有诸如备忘录、请求、财务等标签。输出不正确,没有显示我们办公室的所有记录。我认为WHERE子句中有一个问题?我的代码中的罪魁祸首可能是什么?通过删除围绕1的单引号更新您的查询:
$query = "SELECT `doc`.`id`, `doc`.`barcode`, `doc`.`sub`, `doc`.`source_type`, `doc`.`sender`, `doc`.`address`, `doc`.`description`, `doc`.`receipient`, `doc`.`status`, DATE_FORMAT(`doc`.`datetime_added`, '%m/%d/%Y-%h:%i %p') as datetime_added,
(SELECT GROUP_CONCAT(`tag`) FROM `tags` WHERE `tags`.`documentId` = `doc`.`id` GROUP BY `tags`.`documentId`) as `tags`
FROM `documents` AS `doc`
JOIN `transactions` AS `trans` ON `doc`.`id` = `trans`.`document_id`
JOIN `trackers` AS `track` ON `doc`.`id` = `track`.`document_id`
WHERE `doc`.`status` = 'Processing'
**AND `track`.`action` = 1)**
AND `track`.`location` = '$office'
ORDER BY `doc`.`id` DESC";
您需要通过
id
在tags
表上加入一个子查询,该子查询对GROUP\u CONCAT
执行操作,以生成每个文档的所有标记列表。我发现您的代码中有太多问题,无法尝试正式答案。您好@TimBiegeleisen,我目前正在进行自定义查询。我稍后会更新代码。你看到了什么问题,我可以解决它?非常感谢!
$this->db->select("doc.id, doc.barcode, doc.sub, doc.source_type, doc.sender, doc.address, doc.description, doc.receipient, doc.status, DATE_FORMAT(doc.datetime_added, %m/%d/%Y-%h:%i %p) as datetime_added,
(SELECT GROUP_CONCAT(tag) FROM tags WHERE tags.documentId = doc.id GROUP BY tags.documentId) as tags")
->from("documents AS doc")
->join("transactions AS trans",'doc.id=trans.document_id')
->join("trackers AS track",'doc.id=track.document_id')
->where("doc.status","Processing")
->andWhere("track.action","1")
->andWhere("doc.id",$office)
->order_by("doc.id", "DESC");