Возможно ли сделать CROSS JOIN между двумя таблицами, за которым следует LEFT JOIN на третьей таблице, а затем, возможно, больше левых объединений? Я использую SQL Server 2000/2005.Cross Join, а затем Left Join
У меня есть следующий запрос, который довольно прямойForForMO IMO, но я получаю сообщение об ошибке.
select P.PeriodID,
P.PeriodQuarter,
P.PeriodYear,
M.Name,
M.AuditTypeId,
A.AuditId
from Period P, Member M
LEFT JOIN Audits A
ON P.PeriodId = A.PeriodId
WHERE
P.PeriodID > 29 AND P.PeriodID < 38
AND M.AuditTypeId in (1,2,3,4)
order by M.Name
Я получаю следующее сообщение об ошибке:
Msg 4104, Level 16, State 1, Line 1 The multi-part identifier "P.PeriodId" could not be bound.
Если удалить LEFT JOIN, запрос работает. Тем не менее, мне нужен LEFT JOIN, так как есть больше информации, которую мне нужно извлечь из других таблиц.
Что я делаю неправильно? Есть ли лучший способ этого?
Thnx. Это делает меня понятнее. Выполнение перекрестного соединения - единственный способ, который я могу решить, чтобы решить мою конкретную проблему. Что делает оператор «* =»? –
@Saajid Imsail * = это старый оператор LEFT JOIN для неявных объединений. –
Этот оператор ненадежный и устаревший, правильное исправление заключается в использовании явных объединений. Нет никакого оправдания для того, чтобы не использовать явные объединения в любом запросе. – HLGEM