gpt4 book ai didi

php - 仅选择存在 2 列的特定组合的值?

转载 作者:行者123 更新时间:2023-11-29 11:04:05 25 4
gpt4 key购买 nike

我有一个表“时间表”,我想根据另一个名为“employees_projects”的数据透视表(引用“employeeID”和“projectID”)将空白记录插入其中。我想在时间表表中生成一个 INSERT/UPDATE 查询,该查询本质上将使用 EmployeeID 作为输入,然后显示员工通过员工项目表分配给他们的所有项目。

例如,名为Foo的员工的employeeID为1。有一个名为Bar的项目,其projectID为1。employees_projects中存在一条employeeID=1和projectID=1的记录。现在,当 Foo 加载时间表 php 文件时(在 session 中存储了他的 $employeeID 之后),我只想填充项目 Bar 的时间表记录。这是我用来构建时间表的 php 代码,您可以看到我正在使用的列:

 $result = $conn->query("select timesheets.id, Monday, Tuesday, Wednesday, Thursday, Friday, WeekEndingDate, Notes, Submitted, EmployeeID, ProjectID, projects.ProjectName from timesheets INNER JOIN projects ON timesheets.ProjectID=projects.id WHERE EmployeeID=$eId");

while ($row = $result->fetch_assoc()) {

unset($id,$Mon,$Tues,$Wed,$Thurs,$Fri,$WeekEndingDate,$notes,$employeeId,$projectId,$projectName);
$id = $row['id'];
$Mon = $row['Monday'];
$Tues = $row['Tuesday'];
$Wed = $row['Wednesday'];
$Thurs = $row['Thursday'];
$Fri = $row['Friday'];
$WeekEndingDate= $row['WeekEndingDate'];
$notes = $row['Notes'];
$employeeId = $row['EmployeeID'];
$projectId = $row['ProjectID'];
$projectName = $row['ProjectName'];

echo '<tr><td>'. $projectId.'</td><td>'.$projectName.'</td><td><input type="text" id="Mon" value='.$Mon.'></td><td><input type="text" id="Mon" value='.$Tues.'></td><td><input type="text" id="Mon" value='.$Wed.'></td><td><input type="text" id="Mon" value='.$Thurs.'></td><td><input type="text" id="Mon" value='.$Fri.'></td><td>'.$notes.'</td></tr>';

如您所见,我使用的查询已过时,因为它只是项目表的内部联接,而不是员工项目表的内部联接。我不知道如何更改查询以仅返回分配给该员工的项目的时间表内的所有列。

有什么帮助吗?

编辑

抱歉,我会尽力澄清。我正在使用 php 根据上面 $result 代码中显示的 SELECT 查询构建一个表单。这正确地构建了一个表单,但当前显示了在项目表中找到的所有项目(即projectID 1、projectID2等)。我需要一个 SELECT 查询,该查询将仅根据雇员项目中的列的雇员 ID/项目 ID 组合返回分配给雇员的项目。之后,我将使用我的 php 代码在点击提交时构建 INSERT 查询。

最佳答案

将所有表连接在一起:

SELECT ...
FROM projects AS p
JOIN employee_projects AS ep ON p.id = ep.projectID
JOIN employees AS e ON e.id = ep.employeeID
LEFT JOIN timesheets AS t ON t.projectID = p.id and t.employeeID = e.id
WHERE p.name = 'Bar'

我对时间表使用了LEFT JOIN,因此您仍然会为分配到该项目的每个员工获得一行,即使其中一些员工尚未填写时间表。

这里似乎存在一些可以标准化的冗余,因为 employee_projectstimesheets 都有 projectIDemployeeID外键。如果 employee_projects 表中的 ID 有一个外键,那就更好了。

关于php - 仅选择存在 2 列的特定组合的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41705975/

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