Est-il possible de faire un CROSS JOIN entre 2 tables, suivi d'un LEFT JOIN sur une 3ème table, suivi éventuellement d'autres jointures à gauche? J'utilise SQL Server 2000/2005.Cross Join suivi de Left Join
Je cours la requête suivante, qui est assez droite IMO, mais j'obtiens une erreur.
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
Je reçois l'erreur suivante:
Msg 4104, Level 16, State 1, Line 1 The multi-part identifier "P.PeriodId" could not be bound.
Si je retire la LEFT JOIN, la requête fonctionne. Cependant, j'ai besoin de LEFT JOIN, car il y a plus d'informations que je dois tirer des autres tables.
Qu'est-ce que je fais mal? Y a-t-il un meilleur moyen d'y arriver?
Thnx. Cela rend les choses plus claires pour moi maintenant. Faire une jointure croisée est la seule façon que je peux penser pour résoudre mon problème particulier. Que fait l'opérateur '* ='? –
@Saajid Imsail * = est l'ancien opérateur LEFT JOIN pour les jointures implicites. –
Cet opérateur est peu fiable et obsolète, le correctif approprié consiste à utiliser des jointures explicites. Il n'y a aucune excuse pour ne pas utiliser de jointures explicites dans une requête. – HLGEM