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 :

[Modélisation][Sql] Comment réaliser une liste chainée ?


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 26
    Points : 29
    Points
    29
    Par défaut [Modélisation][Sql] Comment réaliser une liste chainée ?
    Bonjour,


    j'ai un soucis de modélisation d'une base de données.

    Je dois stocker une liste chainée dans laquelle

    - je dois pouvoir facilement ajouter ou enlever un élément
    - la chaîne n'a ni début ni fin : tous les élements ont un "élement suivant"
    (on est plutôt sur un collier de perles !)
    - je n'ai besoin de parcourir ma liste que dans un seul sens


    J'ai bien pensé à une table (simplifiée bien sur)

    ID int autoincrémenté
    libElement varchar(100)
    Next ID int

    Cela me fait une insertion + 1 update à chaque insertion d'un nouvel élément
    dans la chaîne.


    Par contre, comment faire un ordre SQL qui réponde à la question "Je veux
    les 200 élements suivant l'élement dont l'ID est xxx ?"

    Je ne peux pas faire de récursivité vu le nombre d'éléments à retourner.


    Un autre point. L'appli est développé sous SQL 2000, mais doit être portable
    sous MySQL ...


    Help !

    --
    Cordialement

  2. #2
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    id>telnb et id<telnb+200

    avec telnb ton id de départ !!

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Citation Envoyé par hutchuck
    id>telnb et id<telnb+200

    avec telnb ton id de départ !!
    non cette solution n'est pas bonne car les auto_increment ne se suivent pas forcément. Si il y a eu suppression d'un enregistrement, l'ID ne sera pas mis à jour.

    Faudrait plutôt jouer avec des rowid...

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Implémentez une représentation intervallaire d'arborescence telle que je l'ai décrite ici : http://sqlpro.developpez.com/cours/arborescence/
    Une liste chaînée n'est qu'un cas particulier d'arbre.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bonjour Oxiane
    Citation Envoyé par La règle du forum
    Ce forum général SGBD est consacré aux discussions comparatives entre les SGBD, et sur les concepts généraux aux SGBD.

    Règles
    - Si vous souhaitez parler d'un SGBD en particulier, postez votre message dans le forum correspondant (Access, MySQL, Interbase...) S'il ne rentre dans aucun de ces forums, merci de le placer sur Autres SGBD et non pas Général SGBD.

    - Si votre message concerne les requêtes SQL, veillez à le placer sur le forum intitulé Langage SQL. ...
    voir > http://www.developpez.net/forums/viewtopic.php?t=67792

    Soyez rigoureux quant aux respects des règles du forum, elles vous garantissent également les réponses les plus appropriées à résoudre votre souci, tout en veillant à ne pas incommoder inutilement les professionnels qui donnent benevolement de leur compétence à vous répondre.

    Exceptionnellement, je déplace votre post dans le forum approprié Langage SQL
    Conformément à la règle décrite dans le lien ci-dessus, je supprimerai tout autre post non conforme. Si par inadvertance, vous vous aperceviez d'une erreur de postage de votre part, n'hésitez pas à me contactez par mp, ou un autre collègue modérateur afin que nous vous aidions à déplacer votre post (afin d'eviter le multipostage lui même proscrit)

    Très Cordialement neguib
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

Discussions similaires

  1. Réponses: 6
    Dernier message: 29/04/2009, 21h00
  2. Comment réaliser une liste déroulante à deux niveaux !?
    Par Dubbiker dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 01/07/2007, 11h51
  3. Réponses: 5
    Dernier message: 25/04/2006, 09h33
  4. [SQL] Comment réaliser une fonction d'incrementation ?
    Par da_latifa dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/12/2005, 11h14
  5. Réponses: 1
    Dernier message: 09/12/2005, 13h43

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