私はemployee_projects(employeeIDとprojectIDを参照する)という別のピボットテーブルに基づいて空のレコードを挿入したいテーブル 'タイムシート'を持っています。私は基本的にEmployeeIDを入力として使用して、従業員がemployees_projectsテーブルを介して割り当てたすべてのプロジェクトを表示するタイムシートテーブルにINSERT/UPDATEクエリを生成します。2列の特定の組み合わせが存在する場合にのみ値を選択しますか?
例:Fooという名前の従業員には、employeeIDが1に設定されています.barという名前のprojectが1のprojectIDです。employeesID = 1かつprojectID = 1のemployees_projectsにレコードが存在します。さて、Fooがタイムシートphpファイルをロードすると(セッション内に彼の$ employeeIDがすでに格納されている)、私はプロジェクト・バーのタイムシート・レコードを設定したいだけです。それだけでINNER JOINをされているので、私は使用していたクエリが古い、
$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のコードがある、あなたは、私が使用していた列を見ることができますemployees_projectsではなく、projectsテーブル。その従業員に割り当てられているプロジェクトのタイムシート内のすべての列を返すようにクエリを変更する方法はわかりません。
助けが必要ですか?
EDIT
申し訳ありませんが、私は明確にしようとします。私は$ resultのコードで上に示したSELECTクエリに基づいてフォームを構築するためにPHPを使用しています。これはフォームを正しく構築していますが、現在はプロジェクトテーブル内のすべてのプロジェクト(つまり、projectID1、projectID2など)を表示しています。私は、employees_projects内の列のemployeeID/projectIDの組み合わせに基づいて従業員に割り当てられたプロジェクトのみをreutrnするSELECTクエリが必要です。その後、私は私のPHPコードを使用して、サブミット時にINSERTクエリを作成します。
タイムシートを再設計できますか?データベーステーブルがスプレッドシートではありません – Strawberry
どのような種類のクエリを作成しようとしていますか?あなたは 'INSERT/UPDATE'クエリを生成したいが、プロジェクトを表示するはずだと言う。あなたは 'INSERT'と' UPDATE'で物事を表示しません。 – Barmar
申し訳ありませんが、私は明確にしようとします。私は$ resultのコードで上に示したSELECTクエリに基づいてフォームを構築するためにPHPを使用しています。これはフォームを正しく構築していますが、現在はプロジェクトテーブル内のすべてのプロジェクト(つまり、projectID1、projectID2など)を表示しています。私は、employees_projects内の列のemployeeID/projectIDの組み合わせに基づいて従業員に割り当てられたプロジェクトのみをreutrnするSELECTクエリが必要です。その後、私は私のPHPコードを使用して、サブミット時にINSERTクエリを作成します。 – Pstivala7