Codeigniter 2 множественное соединение и где заявление

0

Обновленный код

$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? Что может быть виновником в моем коде?

  • 0
    Вам нужно будет присоединиться к подзапросу, который выполняет GROUP_CONCAT для таблицы tags по id чтобы сгенерировать список всех тегов для каждого документа. Я вижу слишком много проблем в вашем коде, чтобы попытаться получить формальный ответ.
  • 0
    Привет @TimBiegeleisen Я в настоящее время делаю пользовательский запрос. Я буду обновлять код позже. Какие проблемы вы видите, чтобы я мог это исправить? Большое спасибо!
Теги:
join
codeigniter-2

2 ответа

0
$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");
0

Обновите свой запрос, удалив одинарные кавычки, окружающие 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";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню