【问题标题】:Get Record from two table using codeigniter where all matching record from first table使用 codeigniter 从两个表中获取记录,其中第一个表中的所有匹配记录
【发布时间】:2017-03-18 10:23:30
【问题描述】:

我有两张桌子:

  1. 学生 [id, studname, school, bid, ...]
  2. 出席 [id, sid, bid, attenDate, ...]

sid:学生证
出价:批次编号

我正在尝试从批次的Student 表和同一批次的一个特定日期的attendance 获取记录。

但我正在获取student 的记录/列表,其idattendance 中可用。

学生桌:

考勤表:

在这两种情况下,我只得到两条记录。我期待 3 个学生名单。

SELECT * FROM students s LEFT OUTER JOIN attendance a ON s.id = a.sid WHERE s.bid=1 AND a.attenDate='2017-03-18'

$condition = ['s.bid'=>$bid,'a.attenDate'=>$adate];         
$listattend = $this->db->select('*')
                       ->from('students s')
                       ->join('attendance a', 's.id = a.sid', 'right outer')
                       ->where($condition)
                       ->get();                                 
return $listattend->result();

【问题讨论】:

  • 添加有问题的表结构和数据
  • @Rafiq 我添加了有问题的表格图像和数据
  • 但是从图像中获取表格和数据需要时间。因此,如果您添加有问题的表结构和数据或在fiddle 中尽早解决问题会更好。谢谢
  • attenDate 列的数据类型是什么?

标签: php mysql codeigniter


【解决方案1】:

试试这个

SELECT a.*,s* FROM attendance a LEFT JOIN students s ON a.sid = s.id AND a.bid=s.bid WHERE DATE(a.date) = "2017-02-05"

【讨论】:

  • 没有。它不工作它提供所有日期的所有记录。实际上这里的问题是那个日期。我无法解决。我无法结合当前。 "WHERE s.bid=1 AND a.attenDate='2017-03-18'" 这个
猜你喜欢
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多