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

Langage SQL Discussion :

Tri par rapport au précédent


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Tri par rapport au précédent
    Bonjour,

    Tout d'abord je développe en php et utilise MSSQL

    C'est la base de donnée de l'école donc je ne peut modifer les propriétés des champs de la table.

    J'ai une table `Forum`

    Forum ( CODE, SUJET, TEXTE, DATE_CREATION, PRECEDENT, #CODE_LECTEUR )

    Je cherche a effectuer un tri par rapport au précédent situé dans chaqune des occurences.

    En bref si ma table est composé de
    CODE | PRECEDENT
    -----------------
    33 30
    30 36
    36 0

    Je doit avoir résultant (si on prend l'hypothèse que si precedent = 0 c'est le premier post)
    CODE | PRECEDENT
    -----------------
    36 0
    30 36
    33 30

    Je ne pense pas pouvoir le faire en array car sur une grande base cela n'est pas envisagable .. autant trier sur la date_creation ..

    Si vous avez une idée d'une autre façon d'exploiter cette table n'hésiter pas à dire (mais je pense que l'on puisse faire qu'un genre de livre d'or ..)

    Merci d'avance pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    euh... c'est ça que tu veux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Code, Precedent
    FROM Forum
    ORDER BY Precedent
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Non car là tu tri juste sur le Precedent donc pour mon exemple j'aurais

    CODE | PRECEDENT
    -----------------
    36 0
    33 30 <- Ici erreur car le précédent est 36, pas 30
    30 36

    Si tu vois ou je veux en venir

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Donc par date de création du précédent ? c'est ce qu'on appelle une auto-jointure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT F.Code, F.Precedent, P.Date_Creation
    FROM Forum F
      INNER JOIN Forum P ON F.Precedent = P.Code
    ORDER BY F.Date_Creation
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Je pense que la date de création n'a rien a voir.
    Cette requete d'auto-jointure va juste supprimer ce qui sont sans précédent mais ne va pa les classer (si je me trompe pas ..)

    J'ai la base en mysql hébergé chez moi si tu veut tester

    http://arkeseonmaison.dyndns.org/phpMyAdmin/
    etd/etd

    Edit:
    Moi je cherche a ce qu'ils soient afficher ds le bon ordre afin de les afficher directement sur le site

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Je vient de réfléchir et je pense qu'ils veulent que l'on fasse qq chose dans le principe de ce site.

    http://www.mopar-owners-club.com/w-a...c_leforumdumoc

    Mais le problème c'est que je vais devoir effectuer des requètes pour ce qui vont avoir le precedent null ou 0
    Puis pour chacun de cela refaire une requete ... récurcivement surement.

    Je trouve que sa fait énormément de requête

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut Récursivité
    Avec SQL Server, vous pouvez essayer une requête récursive du genre de celle qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Drop Table Nomencl ;
     
    Create Table Nomencl
    (Précédent char(8) not null,
     Code char(8) not null,
    Primary Key (Code)
    ) ;
     
    Insert into Nomencl values ('30', '33') ;
    Insert into Nomencl values ('36', '30') ;
    Insert into Nomencl values ('0', '36') ;
     
    ----------- Requête récursive ------------------
     
    With Recurs (Précédent, Code) As
     -- Amoçage de la pompe
    (Select Précédent, Code
      From   Nomencl where Précédent = '0'    -- point de départ
      Union All
      -- Récursion
     (Select n.Précédent, n.Code
      From   Nomencl As n, Recurs As r   
      Where  n.Précédent = r.Code)
     ) 
    -- Affichage du résultat 
    Select Code, Précédent
    From   Recurs
    ;
     
    -----------------------------------
     
    Code  Précédent
     
    36      0       
    30      36      
    33      30
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Je te remercie fsmrel c'est exactement ca que je cherchais à faire :]

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

Discussions similaires

  1. realiser un tri par rapport aux dates
    Par le_viet dans le forum Général VBA
    Réponses: 3
    Dernier message: 24/04/2007, 15h05
  2. tri par rapport à la date
    Par valer dans le forum Bases de données
    Réponses: 2
    Dernier message: 05/04/2007, 12h52
  3. tri par rapport à une liste dans la clause where
    Par umbakrail dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/07/2006, 11h32
  4. Tri par rapport à une liste de clés primaires
    Par yoyot dans le forum Langage SQL
    Réponses: 10
    Dernier message: 23/06/2006, 12h48
  5. [FLASH 8] DataGrid - tri par rapport à la colonne
    Par aldo-tlse dans le forum Flash
    Réponses: 10
    Dernier message: 02/12/2005, 16h28

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