1

私は MySQL の選択ステートメントをもう少しよく学ぼうとしていますが、どういうわけか同じ値を持つ複数の行を選択してしまいました。最後の JOIN を削除すると、クエリは正しく実行されますが、最後の JOIN ステートメントに示されているように、タスク.Rate_Schedule_ID を hourlyrates.Rate_Schedule_ID と結合する必要があります。

編集:行ごとに1回複製しています。ここに私が得ている結果の写真があります。

ここに画像の説明を入力

 SELECT 
 project_timecard_tasks.Task_ID, 
 project_timecard_tasks.DateTime,
 project_timecard_tasks.Total_Hours,
 project_timecard_tasks.User_ID,
 project_timecard_tasks.Project_ID,
 users.User_ID,users.FirstName,
 users.LastName,
 tasks.id,
 tasks.taskName, 
 tasks.billingOption,
 tasks.fixedRate,
 tasks.Rate_Schedule_ID,
 hourlyrates.Rate_Schedule_ID,
 hourlyrates.hourlyRate

FROM 
 project_timecard_tasks 

JOIN users ON project_timecard_tasks.User_ID = users.User_ID 
JOIN tasks ON project_timecard_tasks.Task_ID = tasks.id 
JOIN hourlyrates ON tasks.Rate_Schedule_ID = hourlyrates.Rate_Schedule_ID

WHERE 
 project_timecard_tasks.Project_ID = '$jobNumber'
4

1 に答える 1

2

問題は、同じRate_Schedule_IDを持つ(タスクテーブルからの)結果に複数の行があることです。つまり、これらのそれぞれについて、時間単価テーブルで一致が得られ、行ごとに2つの一致が得られます。

SELECTをSELECTDISTINCTに変更すると、問題が修正されます。ただし、これは、データにさらに深刻な問題があることを示している可能性があります。

これが本当に問題であるかどうかを確認する方法は、最後の結合なしで結果セットを確認することです。重複するRate_Schedule_IDがある場合は、それが行を複製している理由です。

于 2012-06-13T00:02:22.990 に答える