tbl_plannedに特定の日付のデータがない場合でも、クエリにデータをプルさせて、1つのtbl_actualからのすべての日付を含めようとしています。
しかし、内部結合と左結合を一緒に使用すると、左結合がサポートされていないということです。
左結合の代わりに2つの内部結合を使用しようとしましたが、それでもtbl_plannedクエリから日付を取得するだけなので、tbl_actualからのすべての日付も必要です。
SELECT cal.Day, planned.LocalDay, actual.LocDay, actual.Over30Minutes,
actual.Over30MinutesHours, actual.NumOfUses, actual.TotalDurationTaken,
planned.Campaign, planned.Supervisor, planned.DurationScheduled,
actual.PersonID, planned.PersonID
FROM (tbl_actual AS actual INNER JOIN tbl_planned AS planned ON
(planned.PersonID = actual.PersonID)) Left Join tbl_actual ON actual.LocDay
= planned.LocalDay
tbl_plannedに特定の日付のデータがない場合でも、クエリにデータをプルさせて、1つのtbl_actualからのすべての日付を含めようとしています。
SQLでは、これはtbl_actual LEFT JOIN tbl_planned
、に続いて結合条件(日付と人)として表すことができます。内のレコードtbl_actual
で一致なしとのtbl_planned
意志はまだに関連するすべての列で、出力に含まれtbl_planned
示しますNULL
。
私はあなたのクエリが次のように単純化できると思います:
SELECT
-- cal.Day,
planned.LocalDay,
actual.LocDay,
actual.Over30Minutes,
actual.Over30MinutesHours,
actual.NumOfUses,
actual.TotalDurationTaken,
planned.Campaign,
planned.Supervisor,
planned.DurationScheduled,
actual.PersonID,
planned.PersonID
FROM
bl_actual AS actual
LEFT JOIN tbl_planned
ON planned.PersonID = actual.PersonID
AND actual.LocDay = planned.LocalDay
PS:結果セットの最初の列にcal
示されているようにcal.Day
、テーブルエイリアスとは何ですか?このエイリアスはクエリのどこにも宣言されていません。列をコメントアウトしました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加