gpt4 book ai didi

mysql - 如何执行此连接查询?

转载 作者:行者123 更新时间:2023-11-30 22:22:17 26 4
gpt4 key购买 nike

我有一个表leave_form,它看起来像:

type     id reporting_id leave_bal from_date_id leave_from to_date_id leave_to number leave_for status applied_dates_id pendays
personal 99 6 10 1023 full day 1313 full day 10 personal yes 1026 null

我有单独的日期表,因此我可以将这些日期引用到 leave_form 中。我的 leave_date 表如下所示:

date_id(AI)  dates(UK)
1025 2016-02-18
1301 2016-02-20
1218 2016-02-16

我已将此 date_id 插入到 leave_form 表的 from_date_id, to_date_id, applied_dates_id 列中,即所有日期都插入到 leave_date 表,从这个表我只将 date_id 引用到 leave_form 表中。

还有一个表保存着emp_codeemp_name。我的个人表是:

id(AI)  emp_code(PK)   emp_name
99 K0209 Nijo

当我试图从 leave_form 表中获取 from_date_id, to_date_id, applied_dates_id 列的日期时,我没有得到任何值。

我获取日期的查询是:

select g.type, a.emp_code, h.rm_id, h.rm_name, g.leave_bal, i1.dates as from_date,
g.leave_from, i2.dates as to_date, g.leave_to, g.number, g.leave_for, g.status,
i3.dates as applied_date, g.pendays
from personal a
inner join leave_form g
on a.id = g.id
inner join inform_to_rm h
on h.reporting_id = g.reporting_id
inner join leave_dates i1
on i1.dates = g.from_date_id
inner join leave_dates i2
on i2.dates = g.to_date_id
inner join leave_dates i3
on i3.dates = g.applied_dates_id
where a.emp_code = 'K0209';

它显示的结果如下:

type, emp_code, rm_id, rm_name, leave_bal, from_date, leave_from, to_date, leave_to, number, leave_for, status, applied_date, pendays

即当我执行此查询时没有返回任何数据。

最佳答案

我同意对问题的评论之一。我建议直接在 leave_form 表中引用日期,而不是将 FK 引用到带有日期的表中。但回到问题。您没有完整地描述您的所有表格,因此可能存在多个我看不到的问题,但是,肯定有一个问题。

您的查询加入于

inner join leave_dates i1
on i1.dates = g.from_date_id
inner join leave_dates i2
on i2.dates = g.to_date_id
inner join leave_dates i3
on i3.dates = g.applied_dates_id

这是不正确的。 leave_dates.dates 是实际日期,而您加入的列(leave_form.from_date_id、leave_form.to_date_id、leave_form.applied_dates_id)是外键引用。

例如,1023 不等于 2016-02-18,因此您找不到匹配项。用以下内容替换上面的查询片段可以解决这个特定问题。

inner join leave_dates i1
on i1.date_id = g.from_date_id
inner join leave_dates i2
on i2.date_id = g.to_date_id
inner join leave_dates i3
on i3.date_id = g.applied_dates_id

关于mysql - 如何执行此连接查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36349727/

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