获取id仅存在于一个表中且id匹配的所有报告


Get all reports where id is only present in one table and id match

好的,我有一个未读的报告表和报告表,点击一个按钮,StaffIDReportID就会收到已读的表(Read_Report)。

我可以检索所有与工作人员匹配的已读报告(查询1)

我可以获得不在两个表中但仅在报表(查询2)中的所有报表。

然而,在查询2中,我需要得到既不是已读的报告,也不是与会话ID相关的报告。

报告

  • 报表ID(PK)

有什么办法可以让这个工作吗?

Read_Report

  • 员工ID(FK)
  • 报表ID(FK)

报告

工作 (查询1)

 function get_read_report()
        {
            $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();// fetch data then return
        }

不是用户的个人(查询2)

    function get_unread_report()
    {
        $this->db->select('report.Report_Name, report.ReportDate, report.ReportID')
            ->from('report')
            ->join('Read_Report', 'report.ReportID = Read_Report.ReportID', 'left')
            ->where('Read_Report.ReportID IS NULL');
//            ->where('Read_Report.StaffID',$this->session->userdata("StaffID"));
        $result = $this->db->get();
        return $result->result();
    }

问题中似乎没有足够的信息来提供任何答案。让我解释一下原因。

如果我正确理解问题,您需要从report表中获取尚未读取的记录,因此在Read_Report表中没有任何相关记录,但同时对$this->session->userdata("StaffID")有一些参考。这是正确的吗?

我们不知道report表是否对StaffID有任何引用,或者是否存在同时引用report表中的ReportIDStaffID的任何其他表。简言之,除了告诉我们有人阅读了报告的表之外,我们不知道report是如何与stuff id相关的。

很可能应该有一个表或一些逻辑来定义StaffID是否有权访问报告。使用此逻辑,我们可以列出给定StaffID可用的所有报告,从而与会话ID相关。

一般来说,问题可能是——"与会话ID相关的报告"是什么意思?它们是如何关联的?如果我们不知道这个问题的答案,我们就无法回答你的问题。