Выражение соединения не поддерживается при внутреннем соединении и левом соединении - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь, чтобы данные моего запроса включали все даты из моего tbl_actual, хотя в моем tbl_planned нет данных на определенные даты.

Но при использовании моего внутреннего соединения и моего левого соединения вместе, это говорит о том, что левое соединение не поддерживается.

Я пытался использовать два внутренних объединения вместо левого, но это все еще только извлекает даты из запроса 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

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Я пытаюсь, чтобы данные моего запроса включали все даты из моего tbl_actual, хотя в моем tbl_planned нет данных по определенным датам.

В 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, первом столбце вашего набора результатов?Этот псевдоним не объявлен нигде в запросе, я закомментировал столбец.

0 голосов
/ 13 февраля 2019

Я думаю, что вы хотите сослаться tbl_actual только один раз:

FROM tbl_actual AS actual INNER JOIN
     tbl_planned AS planned
     ON planned.PersonID = actual.PersonID AND
        actual.LocDay = planned.LocalDay
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...