【问题标题】:compare and show data that does not match比较并显示不匹配的数据
【发布时间】:2016-04-29 06:59:23
【问题描述】:

如何更改我的查询以选择所有未共享 ReportID 的数据?

所以所有'report.Report_Name, report.ReportDate, report.ReportID' 不匹配report.ReportID = Read_Report.ReportID

然后从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();

【问题讨论】:

  • 你在哪个代码中翻译 sql ?
  • 对不起,我正在使用 codeigniter
  • 既然是select语句,你可以直接发送原始sql吗?
  • 对不起@SamOrozco 你是什么意思

标签: php mysql sql codeigniter join


【解决方案1】:

您想要做的是两组之间的差异,通常这是通过左连接和右表外键上的空 where 子句完成的(某些数据库提供相交功能,但因为我不知道你使用哪个数据库,我会坚持适用于任何 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

我不知道您的查询构建器的具体语法,但我认为您将有一个 leftJoin 方法和一种检查列是否为空的方法。

顺便说一句,请尝试为您的表和列名使用唯一的命名和大小写方案

【讨论】:

  • 谢谢老兄,我给这个小费。看到它我可以让它工作。我想我仍然需要 $this->session->userdata("StaffID") 向我的用户显示数据
【解决方案2】:

也许这会起作用?

    $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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2020-08-16
    相关资源
    最近更新 更多