IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entity Framework Discussion :

Outer join ?


Sujet :

Entity Framework

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Points : 11
    Points
    11
    Par défaut Outer join ?
    Bonjour à tous,

    Encore une fois je compte sur vos lumières pour me sortir d’un pétrin !

    Soit le schéma de bdd suivant :
    Etudiant 1-* MathsMoyenne 1-* MathsDetail

    Et la super requête :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var queryO = from et in this.EFContext.Etudiants
    	     where et.Year == year && et.A31 == a31 && et.Name == Name
                 join mm in this.EFContext.MathsMoyenne on new { et.Name } equals new { mm.Name } into tempmm
                 from mms in tempmm.DefaultIfEmpty()
                 join md in this.EFContext.MathsDetails on new { et.Name } equals new { md.Name } into tempmd
                 from mds in tempmd.DefaultIfEmpty()
                 where mds.MeasureDate == measureDate
                 select new EtudiantNote{...}

    Ce que je désire, c’est, pour une année passée en paramètre (concerne l'étudiant), un groupe particulier (concerne l'étudiant) et une date de note (date du contrôle, concerne MathsDetail), obtenir un nouvel objet qui contiendra des détails sur l’étudiant, les moyennes en maths et surtout des infos sur le contrôle (mathsDetail) à la date spécifiée.
    Facile me direz vous, le code fonctionne.

    Oui mais ! Il faudrait que cela fonctionne également s’il n’y a pas de MathsDetail à la NoteDate spécifiée. Autrement dit je souhaite, même s’il n’y a pas de MathsDetail répondant aux critères en bdd, remonter ma liste des « EtudiantNote » avec ses propriétés MathsDetail vides pour saisie.

    Avez-vous une idée ?
    Merci !


    PS: j'utilise une bdd Oracle avec le composant devart.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Un truc comme ça peut-être ?

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var queryO = from et in this.EFContext.Etudiants
    	     where et.Year == year && et.A31 == a31 && et.Name == Name
                 join mm in this.EFContext.MathsMoyenne
                     on et.Name equals mm.Name into tempmm
                 from mms in tempmm.DefaultIfEmpty()
                 join md in this.EFContext.MathsDetails.Where(det => det.NoteDate == noteDate)
                     on et.Name equals md.Name into tempmd
                 from mds in tempmd.DefaultIfEmpty()
                 where mds.MeasureDate == measureDate
                 select new EtudiantNote{...}

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Plutôt
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var queryO = from et in this.EFContext.Etudiants
    	     where et.Year == year && et.A31 == a31 && et.Name == Name
                 join mm in this.EFContext.MathsMoyenne
                     on et.Name equals mm.Name into tempmm
                 from mms in tempmm.DefaultIfEmpty()
                 join md in this.EFContext.MathsDetails.Where(det => det.NoteDate == noteDate)
                     on et.Name equals md.Name into tempmd
                 from mds in tempmd.DefaultIfEmpty()
                 select new EtudiantNote{...}

    Sans le where mds.MeasureDate == measureDate à la fin.

    Pfff ! Non mais essaie d'être plus pro dans tes réponses, d'avoir le souci du détail toussa toussa ... Franchement !

    Trêve de plaisanterie, un grand merci à toi !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jointures de type OUTER JOIN
    Par Oluha dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2005, 16h11
  2. concatenation de chaine dans un left outer join
    Par the_edge dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/11/2004, 16h08
  3. Remplacer FULL OUTER JOIN
    Par funrighd dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/07/2004, 10h54
  4. probleme avec OUTER / OUTER JOIN
    Par Volcomix dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 21/04/2004, 16h57
  5. [ requeste sql ]INNER JOIN / OUTER JOIN
    Par hocinema dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/04/2004, 21h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo