php - 在不同表中的连接上得到错误的结果

标签 php mysql database

我有一个数据库架构,员工在其中注册,这些员工根据项目分配工作。

1 名员工可以从事多项工作,例如。员工 Johnproject abc 上执行任务 123。员工 John 也在 project abc 但在任务 789 上。

456 任务已分配给其他人,但这是另一个问题。

所以我们让 John 在同一个项目上执行不同的任务,因此我的 assign_job 表中有两个条目。

让我们在下面的小模式中查看图像:

enter image description here

这个模式很好。我现在面临的问题是我想要 timeSchedule 表。所以我为时间表添加了两个表。

新模式将在下面:

enter image description here

我在下面列出的两个项目的两个新表中添加了一些虚拟条目。

  1. 招聘与选拔
  2. 培训与发展

对于项目 1,我添加了 31 个条目,即员工每天都有一些工作时间。但是对于项目 2,员工只工作了 1 天。

现在我运行了这个查询,我认为这不是在这种情况下创建连接的正确方法。我发布这个问题是因为我对数据库中的数据得到了错误的结果。

SELECT 
TS.`date_created` AS TimeSheetMonth, 
TSD.`project_id` AS ProjectID, 
TSD.`date` AS WorkDate, 
TSD.`hours` AS WorkHours, 
TS.`employee_id` AS EmployeeID,
E.`full_name` AS EmployeeName,
MLP.`project_title` AS ProjectTitle,
TS.`id` AS TimeSheetID
FROM timesheet TS
INNER JOIN timesheet_details TSD
ON TS.`id`= TSD.`timesheet_id`
INNER JOIN employee E
ON E.`employee_id` = TS.`employee_id`
INNER JOIN assign_job AJ
ON AJ.`employee_id` = E.`employee_id` AND AJ.`trashed` = 0
INNER JOIN ml_projects MLP
ON AJ.`project_id` = MLP.`project_id`
INNER JOIN ml_projects TMLP
ON TMLP.`project_id` = TSD.`project_id`
WHERE TS.`id`=1
GROUP BY TSD.`timesheetDetails_id`, TSD.`project_id`

正如您在下面的屏幕截图中看到的,我得到项目 ID 1 的项目名称,而我得到 2 作为项目 ID。也许还有更多问题。我在这些连接中做错了什么?

enter image description here

更新

SQL Fiddle

http://sqlfiddle.com/#!2/dc4585/1

我想要单独的记录,因为我想在表格中显示它,如下所示。

enter image description here

最佳答案

您的timesheet 表或任何您想要命名的表,只需要一个外键 - job_id,它指的是 assign_job_id 和在该任务上花费的时间。 employee_idproject_id 没有键,因为 assign_job 已经有了这些信息。我不想为您编写代码,因为我可以看到您可以自己完成。

您将时间表加入 assign_job,并将时间表加入员工和项目 - 瞧。然后,您可以按员工或/和按项目或/和任务分组。一切都在那里

关于php - 在不同表中的连接上得到错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27457598/

相关文章:

php - 我使用 mailparse_msg_create 函数遇到 fatal error

javascript - 从公共(public) Instagram 主题标签获取图像

java - 有两个sql插入的事务

mysql - 通过 SSH 连接 (PuTTY) 通过 MS Access 操作 MySQL 数据库

php - 远程数据库的记录为空

php - MySQL SET 时间戳作为慢速查询

php - 无法从数据库检索数据 PHP、AJAX

php - 将主题上传到 Azure 上的 WordPress 时出错

mysql - SQL 对两个连接表进行排序

php - 日期选择器中未选择的事件日期和时间小于服务器时间