2016-04-29 3 views
0

Как я могу изменить свой запрос, чтобы выбрать все данные, которые не делятся ReportID?сравнить и показать данные, которые не соответствуют

Так что все 'report.Report_Name, report.ReportDate, report.ReportID' , что не соответствует report.ReportID = Read_Report.ReportID

, а затем получить все, что не соответствует из report

Query

$this->db->select('report.Report_Name, report.ReportDate, report.ReportID') 
      ->from('report') 
      ->join('Read_Report', 'report.ReportID = Read_Report.ReportID') 
      ->where('Read_Report.StaffID', $this->session->userdata("StaffID")); 
     $result = $this->db->get(); 
     return $result->result(); 
+0

В какой код вы переводите SQL? – scaisEdge

+0

извините, im используя codeigniter – Beep

+0

, так как это оператор select, вы можете просто отправить raw sql? –

ответ

0

То, что вы хотите сделать, это разница между двумя группами, как правило, это делается с левой присоединиться и нуль, где положение на внешнем ключе правой таблицы (некоторые базы данных является создание пересекаться functionnality, но так как я не знаю, какую базу данных вы используете я буду придерживаться того, что будет работать на любых разновидностях SQL)

Таким образом, ваш запрос должен быть таким:

SELECT report.Report_name, report.ReportDate, report.ReportId 
FROM report LEFT JOIN Read_Report ON report.ReportId=Read_Report.ReportId 
WHERE Read_Report.ReportId IS NULL 

Я не знаю, конкретный синтаксис вашего querybuilder, но я думаю, что у вас будет метод leftJoin и способ проверить если столбец равен нулю.

Кстати, старайтесь придерживаться уникального именования и схемы случая для таблиц и колонок имена

+0

Спасибо, чувак, я даю этому образцу. см. его, я могу заставить его работать. я предполагаю, что il все еще нуждается в '$ this-> session-> userdata (" StaffID ")', чтобы показать данные percific для моего пользователя – Beep

0

Может быть, это будет работать?

$this->db->select('report.Report_Name, report.ReportDate, report.ReportID') 
     ->from('report') 
     ->join('Read_Report', 'report.ReportID = Read_Report.ReportID') 
     ->where('Read_Report.StaffID !=', $this->session->userdata("StaffID")); 
    $result = $this->db->get(); 
    return $result->result(); 
Смежные вопросы