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 :

Colle sur un tri dans une requête linq to sql


Sujet :

Linq

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut Colle sur un tri dans une requête linq to sql
    Bonjour a toutes et a tous !

    J'ai une table Foyer qui contient les infos suivantes:

    - Id_Foyer
    - Nom
    - Prenom
    - Type

    Type contient un entier:
    1=pere
    2=mere
    3=enfant

    j'aimerais obtenir un listing avec la liste de tous les pères de foyer classés par ordre alphabétique.
    En dessous de chaque père, je voudrais la mère (si il y en a une, suivi des enfants (si il y en a)

    J'arrive pas, je cherche depuis 2h

    D'avance merci pour vos réponses

    A+

  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 : 43
    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
    je comprends pas bien ce qui te pose problème... il suffit de trier par Nom, Type et Prénom, non ? Ou alors j'ai rien compris...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut
    Merci pour ta réponse,

    Je vais t'expliquer le problème:

    Les deux parents, ainsi que leurs enfants n'ont pas forcément le même nom de famille.
    Ceci a une lourde conséquence sur le tri que tu proposes: Si en premier lieu on trie par nom, on va "casser" la famille.
    Au final, je veux vraiment avoir:

    - le pere
    - la mere
    - les enfants

    - le pere suivant
    - la mere
    - les enfants

    etc.

    A+

  4. #4
    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 : 43
    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
    ben dans ce cas tu tries par Id_Foyer, type, nom, prénom
    comme ça les foyers ne sont pas séparés

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut
    Oui mais je veux que les pères soient par ordre alphabétique eux.
    Exemple:

    Alexandre (père)
    Myriam (mère)
    Alfred (enfant 1)
    William (enfant 2)
    -
    Dupont (père)
    Alexia (mère)
    Alphonse (enfant 1)
    -
    etc.

    Tu vois bien que les noms d'une manière générale ne sont pas dans l'ordre alpha, ce sont juste les pères qui sont en ordre alpha et j'insère la mère et les enfants entre chaque

  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 : 43
    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
    Aie, ça se complique

    Dans ce cas je pense que le mieux est de faire un jointure de la table Foyer sur elle-même. Quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var results = from f1 in db.Foyer
                  join f2 in db.Foyer on f1.Id_Foyer = f2.Id_Foyer
                  where f1.Type = 1
                  orderby f1.Nom, f1.Id_Foyer, f2.Type, f2.Nom, f2.Prenom
                  select f2;
    En gros, f1 = les pères (Type 1), et f2 = leur foyer (père inclus)
    On trie par le nom du père (f1.Nom) et son foyer (au cas où plusieurs pères ont le même nom), et on joint chaque père au reste de son foyer.

    Normalement ça devrait donner à peu près le résultat voulu... Il y a peut-être moyen d'optimiser, mais je vois pas trop comment.

    Par contre, attention : avec cette requête, un foyer où il n'y a pas de père n'apparaitra pas dans les résultats...

Discussions similaires

  1. [AC-2003] Ordre des tris dans une requête ?
    Par lil404 dans le forum IHM
    Réponses: 2
    Dernier message: 19/05/2009, 10h51
  2. Somme sur conditions imbriquée dans une requête
    Par aleximan dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/01/2008, 18h05
  3. Tri dans une requête
    Par Christophe Charron dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/09/2007, 20h43
  4. [SQL] Tri dans une requête
    Par treflor dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/08/2007, 17h57
  5. Tri dans une requête
    Par jmde dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/02/2007, 14h40

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