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

Développement SQL Server Discussion :

Ordre des elements d'une requete recursive


Sujet :

Développement SQL Server

  1. #1
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut Ordre des elements d'une requete recursive
    Bonjour à tous,

    Me revoila pour un nouveau casse tete avec les requetes recursives

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DECLARE @T TABLE
    (
     ID INT,
     PERE INT,
     LABEL VARCHAR(50)
    )
     
    INSERT @T VALUES (1, NULL, 'Ma ')
    INSERT @T VALUES (2, 1, 'ligne')
    INSERT @T VALUES (3, NULL, 'La ');
    INSERT @T VALUES (4, 2, '1');
    INSERT @T VALUES (5, 3,'2');
    INSERT @T VALUES (6, 5, 'mot');
    Ce que je voudrais :
    1 Ma NULL NULL
    2 Ma ligne NULL
    4 Ma ligne 1
    5 Ma ligne 2
    3 La NULL NULL
    6 Le mot NULL
    Avec une requete recursive, j'arrive a avoir
    1 Ma NULL NULL
    3 La NULL NULL
    6 Le mot NULL
    2 Ma ligne NULL
    4 Ma ligne 1
    5 Ma ligne 2
    Mais c'est pas ce que je veux...

    A la limite, ca, ca m'irait aussi :
    1 Ma NULL NULL
    2 NULL ligne NULL
    4 NULL NULL 1
    5 NULL NULL 2
    3 La NULL NULL
    6 NULL mot NULL
    Est ce que quelqu'un connait la formule magique ?

    Merci

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    1/ Le nombre de niveaux est-il fixe ? n'aurez vous jamais plus de 3 niveaux ? pouvez vous en avoir moins ?

    2/ Pourquoi voulez-vous retourner le résultat en 3 colonnes ? le but n'est-il pas de concaténer les 3 colonnes au final ?

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Un SGBDR n'est pas conçu pour présenter des données, donc il vous faut faire cela du côté de l'application

    @++

  4. #4
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    1/ Le nombre de niveaux est-il fixe ? n'aurez vous jamais plus de 3 niveaux ? pouvez vous en avoir moins ?
    Non ce n'est pas fixe (sinon, ce serait trop facile ). Ca peut etre plus ou moins.

    Citation Envoyé par aieeeuuuuu Voir le message
    2/ Pourquoi voulez-vous retourner le résultat en 3 colonnes ? le but n'est-il pas de concaténer les 3 colonnes au final ?
    Il faut N colonnes avec N le nombre max de colonnes (Si les lignes font 5, 9 et 10 colonnes, alors il faut 10 colonnes).

    Citation Envoyé par elsuket Voir le message
    Un SGBDR n'est pas conçu pour présenter des données, donc il vous faut faire cela du côté de l'application
    Mouais, je vais partir coté appli alors...

    Merci pour votre aide

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    oui,

    Surtout si le nombre de colonnes n'est pas fixé dès le début. Vous seriez obligé de créer une requête dynamiquement et de l'exécuter ensuite !
    sans compter les problèmes de perfs que cela engendrerait...
    C'est pour ca que je demandais si vous vouliez les concaténer à la fin, car alors vous pourriez n'avoir qu'une colonne en concaténant au fur et a mesure dans votre requete récursive...

    comme alternative, Vous pourriez renvoyer une seule colonne XML qui contiendrait les données...

    Mais il me semble en effet préférable de faire cela dans votre programme...

  6. #6
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    L'idée du xml me plait bien aussi. Je creuserais peut etre par la à l'occasion. Merci

Discussions similaires

  1. Garder l'ordre des Records dans une requete select distinct
    Par pobrouwers dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 21/02/2007, 22h06
  2. Ne pas tenir compte des accents dans une requete
    Par zamanika dans le forum Installation
    Réponses: 8
    Dernier message: 08/11/2004, 19h49
  3. [Portal 9iAS] : ordre des items dans une région
    Par melitta dans le forum Oracle
    Réponses: 8
    Dernier message: 21/10/2004, 14h01
  4. Inserer des elements dans une map sans rangement ?
    Par Muetdhiver dans le forum C++
    Réponses: 3
    Dernier message: 07/09/2004, 11h09
  5. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53

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