I'm working on my C# project and I have to get data from database thanks to .sql procedures.
Synthesis :
Table ProprietesCourantes
is linked to table Entite
.
Table Archive
is linked to table EntiteArchive
==> I would like to make a link between ProprietesCourantes
and Archive
thanks to field Libellé
Table ProprietesCourantes
I have several tables in my case :
SELECT TOP (1000) [IdEntite]
,[Libelle]
,[EstActif]
, ...
, ...
FROM [Database].[dbo].[ProprietesCourantes]
WHERE [Libelle] = 'DELTA SERVICE AUTO';
Table Entite
SELECT TOP (1000) [IdEntite]
,[TypeEntite]
,[CodeEntite]
,[TypeCodeEntite]
FROM [Database].[dbo].[Entite]
WHERE IdEntite = '165';
Table Archive
SELECT TOP (1000) [IdArchive]
,[IdEntite]
,[NoteFinale]
,[EstValide]
FROM [Database].[dbo].[Archive]
WHERE IdEntite = '33' and EstValide = '1';
Table EntiteArchive
SELECT TOP (1000) [IdEntite]
,[TypeEntite]
,[CodeEntite]
,[Libelle]
,...
FROM [Database].[dbo].[EntiteArchive]
MY SQL REQUEST :
SELECT
ProprietesCourantes.IdEntite as IdEntite,
ProprietesCourantes.Libelle as RaisonSociale,
Entite.CodeEntite as IdCMCIC,
ProprietesCourantes.NomParent as NomGN,
Archive.NoteFinale as Cotation,
Archive.DateValiditeQuestionnaireDeSoutien as DateValiditeQuestionnaireDeSoutien,
ProprietesCourantes.CodePays as Pays,
ProprietesCourantes.EstActif as Statut,
CAST(CASE WHEN Entite.CodeEntite = ProprietesCourantes.IdSocMere THEN 1 ELSE 0 END AS BIT) as EstMaisonMere,
ProprietesCourantes.IdCMCICParent as IdCMCICParent,
ProprietesCourantesGN.CodeAlgo as CodeAlgoParent
FROM ProprietesCourantes
LEFT JOIN Archive ON (Archive.IdEntite = ProprietesCourantes.IdEntite and Archive.EstValide=1)
LEFT JOIN Entite ON Entite.IdEntite = ProprietesCourantes.IdEntite
LEFT JOIN Entite as EntiteGN ON EntiteGN.CodeEntite = ProprietesCourantes.IdCMCICParent
LEFT JOIN ProprietesCourantes as ProprietesCourantesGN ON ProprietesCourantesGN.IdEntite = EntiteGN.IdEntite
WHERE Entite.TypeEntite = 1
AND (ProprietesCourantes.Libelle LIKE '%'+'DELTA SERVICE'+'%' )
As you can see : Cotation
and DateValiditeQuestionnaireDeSoutien
are NULL because LEFT JOIN Archive ON (Archive.IdEntite = ProprietesCourantes.IdEntite
can't work (different IDEntite).
I tried to replace by this, but it doesn't work, any idea ?
LEFT JOIN Archive ON ((select EntiteArchive.Libelle from EntiteArchive LEFT JOIN Archive ON (EntiteArchive.IdEntite = Archive.IdEntite)) = ProprietesCourantes.Libelle and Archive.EstValide=1)