Я работаю над своим C# проектом, и мне нужно получать данные из базы данных благодаря. sql процедурам.
Синтез:
Таблица ProprietesCourantes
связана с таблицей Entite
.
Таблица Archive
связана с таблицей EntiteArchive
==> Я хотел бы сделать ссылку между ProprietesCourantes
и Archive
благодаря полю Libellé
Таблица ProprietesCourantes
У меня есть несколько таблиц в моем случае:
SELECT TOP (1000) [IdEntite]
,[Libelle]
,[EstActif]
, ...
, ...
FROM [Database].[dbo].[ProprietesCourantes]
WHERE [Libelle] = 'DELTA SERVICE AUTO';
Таблица Entite
SELECT TOP (1000) [IdEntite]
,[TypeEntite]
,[CodeEntite]
,[TypeCodeEntite]
FROM [Database].[dbo].[Entite]
WHERE IdEntite = '165';
Таблица Archive
SELECT TOP (1000) [IdArchive]
,[IdEntite]
,[NoteFinale]
,[EstValide]
FROM [Database].[dbo].[Archive]
WHERE IdEntite = '33' and EstValide = '1';
Таблица EntiteArchive
SELECT TOP (1000) [IdEntite]
,[TypeEntite]
,[CodeEntite]
,[Libelle]
,...
FROM [Database].[dbo].[EntiteArchive]
MY SQL ЗАПРОС:
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'+'%' )
Как видите, Cotation
и DateValiditeQuestionnaireDeSoutien
имеют значение NULL, поскольку LEFT JOIN Archive ON (Archive.IdEntite = ProprietesCourantes.IdEntite
не может работать (другой IDEntite).
Я пытался заменить на это, но это не работает, любая идея?
LEFT JOIN Archive ON ((select EntiteArchive.Libelle from EntiteArchive LEFT JOIN Archive ON (EntiteArchive.IdEntite = Archive.IdEntite)) = ProprietesCourantes.Libelle and Archive.EstValide=1)