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

Linq Discussion :

quelqu'un peut il m'ecrire cette requete sql qui utilise les jointures en linq to sql ?


Sujet :

Linq

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 32
    Points : 25
    Points
    25
    Par défaut quelqu'un peut il m'ecrire cette requete sql qui utilise les jointures en linq to sql ?
    Bonjour,

    Comment convertir ceci en LINQ
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select C.id_chambre from chambre C , reservation R , gestion G
    where G.id = ide 
    and G.categorie=C.categorie
    and C.id_chambre=R.id_chmbre
    and G.date_depart<= R.date_arrivee
    and  G.date_arrivee >= R.date_depart
    Avec ide un entier que j'ai defini auparavant

    Merci beaucoup.

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Elles sont où tes jointures ? Car là il n'y en a aucune. Une jointure c'est ça.

    Sinon tu peux regarder ceci, et chercher un peu pour faire tes jointures.

  3. #3
    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 753
    Points
    39 753
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Elles sont où tes jointures ? Car là il n'y en a aucune
    Hum... t'es sûr ?

    Le mot clé JOIN est pas forcément obligatoire pour faire une jointure (en tous cas pas sur Oracle). Dans sa requête il y a bien une jointure entre les tables chambre, reservation et gestion

    En Linq to SQL ça donnerait quelque chose comme ça :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var query = 
        from c in db.Chambre
        join r in db.Reservation on c.id_chambre equals r.id_chambre
        join g in db.Gestion on c.categorie equals g.category
        where g.date_depart <= r.date_arrivee
              && g.date_arrivee >= r.date_depart
        select c.id_chambre;

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Le mot clé JOIN est pas forcément obligatoire pour faire une jointure (en tous cas pas sur Oracle)
    Je n'ai touché qu'à du SQL Server et c'est vrai qu'à partir de là j'ai peut être trop extrapolé
    Je saurais que sous Oracle c'est implicite maintenant.

    Sous SQL Server la syntaxe existe aussi mais le comportement est différent. Ca génère tous les enregistrements possibles par combinaison entre les différentes tables de la clause FROM.

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Je suis pas sur qu'il faille préciser tous les joins!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    where c.categorie.date_depart <= c.reservation.date_arrivee
              && c.categorie.date_arrivee >= c.reservation.date_depart
    devrait suffir. C'est à Linq de faire son boulot pour les jointures apres

  6. #6
    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 753
    Points
    39 753
    Par défaut
    C'est pas faux
    A condition que les associations aient été correctement modélisées bien sûr...

  7. #7
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut
    Revenons aux jointures en LINQ
    J'ai trouvé un lien intéressant: SQL To Linq: JOIN
    Mon soucis c'est que j'ai trouvé des requêtes Linq comme suit dont je n'y comprends rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    From parution In Context.parutions.Include("messages").Include("messages.plansmedias.campagnes").Include("messages.plansmedias.campagnes.annonceurs").Include("messages.tarifs.produitsvendus.supports.medias") _
                    Where parution.DateParution.StartsWith(argYear & "-" & argMonth) _
                    Select parution
    C'est quoi ces Include(), est-ce le traitement pour des bases avec des clés étrangères, intégrité référentielle, etc?

  8. #8
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Include est censé repondre aux cas de lazy loading.
    Explications:
    J'ai une classe MyClass qui contient un champs qui est une collection d'objets MyChild
    Si tu demandes de charger à partir de la base les entités MyClass, il va charger les propriétés mais pas entierement la collection d'objets (qui est en fait une jointure sur une autre table).
    Si par la suite tu as besoin d'une des entites de cette collection, il ira la chercher par une requete. C'est le lazy loading.
    Le soucis c'est quand tu essaies d'accéder à une entitée qui doit être lazy-loadée alors qu'il n'ya plus de contexte sql (hors d'une transaction par exemple), tu as une belle erreur comme quoi il n'y a pas de contexte.

    Si lors de ta requête tu precises un include ca désactive le lazyloading pour la propriété et force le chargement de la collection/objet

  9. #9
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    Ayant beaucoup utilisé EF 3.5, je n'ai pas encore totalement creusé EF 4.
    Est ce que quelqu'un peut me dire si EF 4 gère le lazy loading en mode batch ?

  10. #10
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut
    Lazy loading, nouveau pour moi!!!

    Mais Include() ça reste de la jointure?

  11. #11
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Oui, il existe aussi sous (n)hibernate

Discussions similaires

  1. [Joomla!] Retrouver la requete SQL qui affiche les modules dans la zone admin
    Par vladock dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 04/10/2012, 12h12
  2. Requete SQL qui sur les jours de l'année
    Par dexter2 dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 12/04/2012, 12h52
  3. Réponses: 5
    Dernier message: 14/08/2009, 09h24
  4. Creer une requete update qui recupere les données de 2 tables
    Par pooi1 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/06/2007, 13h13

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