2016-12-27 88 views
0

我有一個複雜的訪問SQL查詢在LINQAccess查詢Linq中

這個轉變是我做的:

var query = from p in tbl_multiIntervenants.AsEnumerable() 
         join q in 
           ( 
            from s in tbl_contrats.AsEnumerable() 
            join t in 
              (
               from u in tbl_traitement_gapp.AsEnumerable() 
               join v in tbl_TP.AsEnumerable() 
               on u.Field<string>("Identifiant tâche") equals v.Field<string>("Identifiant tâche") into joined 
               from jointe in joined.DefaultIfEmpty() 
               select jointe 
              ) 

            ) 

這裏的SQL查詢:

SELECT Tbl_TP.Société, Tbl_TP.Région, Tbl_TP.[N° Site], Tbl_TP.[Nom Site], 
        Tbl_TP.[Identifiant intervention], Tbl_TP.[Gamme intervention], 
        Tbl_TP.[Description de l'intervention], Tbl_TP.[Identifiant tâche], Tbl_TP.Description, 
        Tbl_TP.[Etat administratif intervention], Tbl_TP.[Date début prévu tâche], Tbl_TP.[Date fin prévu tâche], Tbl_TP.Detrompeur, 
        Tbl_TP.[Entité demandeur], Tbl_TP.[Infos Demandeur], Tbl_TP.[Indicateur accompagnement], Tbl_TP.[Code Journalier], Tbl_TP.Coupure, 
        Tbl_TP.[Validé ?], Tbl_TP.[Accompagnement ?], Tbl_TP.[Observation ?], Tbl_TP.Accès, Tbl_TP.[Contrainte de sécurité], Tbl_TP.V_Couleur, 
        Tbl_TP.[Caractéristiques de l'intervention], Tbl_CONTRATS.[Sensibilité du site], Tbl_CONTRATS.[Approbation automatique AS], Tbl_TP.[Chef de projet SFR], Tbl_TP.[Date création intervention (hs)], 
        Tbl_TP.[Identifiant demande], Tbl_TP.PlanPrevention, Tbl_CONTRATS.Appartenance 

        FROM Tbl_Multi_Intervenants 

        INNER JOIN (Tbl_CONTRATS 
        INNER JOIN (Tbl_TP LEFT JOIN Tbl_Traitement_GAPP ON Tbl_TP.[Identifiant tâche] = Tbl_Traitement_GAPP.[Identifiant tâche]) 

        ON Tbl_CONTRATS.Emplacement = Tbl_TP.[N° Site]) 

        ON Tbl_Multi_Intervenants.[Identifiant tâche] = Tbl_TP.[Identifiant tâche] 

        WHERE (((Tbl_Traitement_GAPP.[Identifiant tâche]) Is Null)) 
        GROUP BY Tbl_TP.Société, Tbl_TP.Région, Tbl_TP.[N° Site], Tbl_TP.[Nom Site], Tbl_TP.[Identifiant intervention], Tbl_TP.[Gamme intervention], Tbl_TP.[Description de l'intervention], 
        Tbl_TP.[Identifiant tâche], Tbl_TP.Description, Tbl_TP.[Etat administratif intervention], Tbl_TP.[Date début prévu tâche], Tbl_TP.[Date fin prévu tâche], Tbl_TP.Detrompeur, 
        Tbl_TP.[Entité demandeur], Tbl_TP.[Infos Demandeur], Tbl_TP.[Indicateur accompagnement], Tbl_TP.[Code Journalier], Tbl_TP.Coupure, Tbl_TP.[Validé ?], 
        Tbl_TP.[Accompagnement ?], Tbl_TP.[Observation ?], Tbl_TP.Accès, Tbl_TP.[Contrainte de sécurité], Tbl_TP.V_Couleur, 
        Tbl_TP.[Caractéristiques de l'intervention], Tbl_CONTRATS.[Sensibilité du site], Tbl_CONTRATS.[Approbation automatique AS], Tbl_TP.[Chef de projet SFR], 
        Tbl_TP.[Date création intervention (hs)], Tbl_TP.[Identifiant demande], Tbl_TP.PlanPrevention, Tbl_CONTRATS.Appartenance; 

回答

0

爲了簡化這裏是sql查詢:

SELECT Tbl_TP.Société, Tbl_CONTRATS.Appartenance 
FROM Tbl_Multi_Intervenants 
INNER JOIN (Tbl_CONTRATS 
      INNER JOIN (Tbl_TP LEFT JOIN Tbl_Traitement_GAPP ON Tbl_TP.Identifiant tâche] = Tbl_Traitement_GAPP.[Identifiant tâche]) 
       ON Tbl_CONTRATS.Emplacement = Tbl_TP.[N° Site]) 
       ON Tbl_Multi_Intervenants.[Identifiant tâche] = Tbl_TP.[Identifiant tâche] 
WHERE (((Tbl_Traitement_GAPP.[Identifiant tâche]) Is Null))