gpt4 book ai didi

php - 具有多个where和join操作的Mysql Insert查询

转载 作者:行者123 更新时间:2023-11-28 23:29:37 26 4
gpt4 key购买 nike

需要插入到表 public_holidays 中,由与假期表日期匹配的给定日期匹配 CLOCK 表 clock_in 和 clock_out 时间字段并获取以秒为单位的时差 28800 = 8hrs,还需要匹配用户指定的表表 user_id,抱歉,代码非常困惑,非常困惑任何帮助都非常有帮助,谢谢。

时钟表

id  user_id     date        clock_in                clock_out             created_at          updated_at
6 12 2016-06-10 2016-06-10 06:00:00 2016-06-10 14:00:00 2016-06-10 19:20:41 2016-06-10 00:15:51

用户

 id         first_name      last_name    designation_id   email
1 crysis name 1 crysis@gmail.com

假期

id    date       holiday_description    created_at         updated_at
1 2016-06-10 christmas 2016-06-11 15:23:54 2016-06-11 15:23:54

名称

designation_id  department_id   designation     created_at       updated_at
1 1 employee 2016-01-30 21:03:24 2016-01-30 22:03:24

部门

department_id   department_name  department_description     created_at            updated_at    
1 IT Info tech 2016-01-30 21:03:24 2016-01-30 21:03:24

需要通过从时钟表计算时间 8 小时,以下面的格式将 Public_holidays 插入到此表中

user_id     department_id   designation_id  date_cur       clock_in         clock_out        created_at                   updated_at
12 1 1 2016-06-13 2016-06-10 06:00:00 2016-06-10 14:00:00 2016-06-13 21:03:24 2016-06-13 21:03:24

尝试乱码

INSERT INTO public_holidays (user_id, department_id,designation_id,clock_in,clock_out) SELECT(cl.user_id, 
di.department_id,
di.designation_id,
cl.clock_in,
cl.clock_out)
FROM clock cl, designations di
where
(
select h1.date AS ph_date from holidays h1 WHERE ph_date = 2015-01-22
AND
select (TIMESTAMPDIFF(second,cl.clock_in, cl.clock_out)=28800) AS differ1
AND
INNER JOIN users AS ui ON ui.designation_id = di.id
);

最佳答案

我还是不明白,但至少看到了一些关系。下面的查询将返回所有员工的数据集和他们每个人的所有假期(h.date 列应该进入 cur_date 表)。最后一个 JOIN 没有任何关系,因此它创建笛卡尔积 - 为每个已构建的行附加每个假期(总行数 = empl x 假期数)

SELECT cl.user_id, di.department_id, di.designation_id, h.date, cl.clock_in, cl.clock_out
FROM clock cl
INNER JOIN users u ON cl.user_id = u.user_id
INNER JOIN designation di ON u.designation_id = u.user_id
CROSS JOIN holidays h --cartesian product: all dates for each row
  • 不知道什么是 clock 表 - 标准工作时间(每个员工一行 - 我假设这是真的),每日时间表(每个员工每个日期一行)或其他什么?如果是标准工作时间,那为什么是 datetime 而不是 time?如果是每日时间表,我应该如何决定您应该从该表中选择哪 8 小时(以及为什么选择 8 小时)?
  • 不知道您为什么要计算/搜索这 8 小时 - 您想为员工插入假期吗?仅工作 8 小时(根据“时钟”/任何一天)
  • 不知道 cur_date 是什么(假设是假期),但为什么要在 datetime 旁边使用 date - 也不应该是time or date or datetime only?

关于php - 具有多个where和join操作的Mysql Insert查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com