workers
表,一张worker_records
表,工作人员的信息记录在workers表,同时当工作人员上班时候会打卡,而打卡记录就在这个worker_records表workers表部分需要用到字段如下 | worker_records表部分需要用到字段如下 |
---|---|
gzryxm——意为:工作人员姓名 | gzrxm——意为:工作人姓名 |
gzrysjh——意为:工作人员手机号 | gzrsjh——意为:工作人手机号 |
gzrysfz——意为:工作人员身份证 | gzrsfz——意为:工作人身份证 |
身份证号唯一
需求:拿到未打卡人的姓名,手机号,身份证号
画出图就是以下这样
db.Model(&Worker{}).
Select("workers.csbh,workers.gzryxm,workers.gzrysjh,workers.gzrysfz").
Joins("left join worker_records on workers.gzrysfz = worker_records.gzrsfz").
Where("worker_records.gzrsfz", nil).
Scan(¬ClockedInPeopleAll)
SELECT w.gzryxm,w.gzrysjh,w.gzrysfz
FROM workers w
LEFT JOIN worker_records wr
ON w.gzrysfz = wr.gzrsfz
WHERE wr.gzrsfz IS NULL
如此便实现了需求所需。
两表联表查询具体可以分为七种,见网图如下: