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 :

Trouver les trous ou le max


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 156
    Par défaut Trouver les trous ou le max
    bonjour,
    je pose mon problème :
    j'ai une base access avec une table.
    je remplis cette table par l'intermédiaire d'une IHM VB
    Lorsque je supprime une entrée et que j'ajoute la suivante elle sera stockée sur la suivante et non celle supprimée
    je cherche donc de l'aide pour trouver une requête qui m'identifierait le premier trou rencontré pour qu'ensuite je le remplisse par la nouvelle entrée.

    J'ai trouvé http://www.developpez.net/forums/d79...e/#post4602718, mais j'ai du mal a l'adapter.
    J'ai aussi trouvé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT     MIN([N°] - 1) AS NextID
    FROM         Arbres AS T1
    WHERE     ((([N°] - 1) > 0) AND
                              (((SELECT     [N°]
                                   FROM         Arbres T2
                                   WHERE     T2.[N°] = T1.[N°] - 1)) IS NULL))
    mais cela m'identifie seulement le premier index à remplir et si tout les trous sont comblés cela retourne la valeur "NULL"

    Existe-t-il donc une requête qui ferait la même chose et qui en plus si null est trouvé me renverrait l'index le plus élevé ?

    Cordialement

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Si ces trous que tu cherches à combler sont sur la colonne clé primaire de la table, laquelle est probablement de type NumAuto, ne le fais pas !

    Une clé primaire doit être invariable, sans signification, non présentée à l'utilisateur et utile seulement pour le SGBD pour gérer les associations entre tables.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 156
    Par défaut
    Bon, d'accord, ça c'est fait comme on dit ^^

    Mais cela ne pose pas de problème plus tard dans le temps ?
    si dans l'avenir j'ai 100 entrées et que j'en supprime 40, il y aura un trou de 40, ce n'est pas "grave" ? Cela ne grossit pas la base pour rien ?

    et pour précision c'est en effet une clé primaire Auto-Incrémenté.

    Mais lors de ma requête INSERT INTO je dois mettre une valeur, sinon j'ai une erreur : "Le nombre de valeurs de la requête doit coïncider avec le nombre de champs destination"
    Pour info voici ma requète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO MaTableVALUES ('000000000A','1121','20','14','161','134','225',True)

  4. #4
    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
    Par défaut
    Bonjour

    Pour info, les "trous", n'ont aucune importance ! ça ne grossit pas la base, puisque justement ils n'y sont pas, et que le vide ne prend pas de place

    pour ton insertion, si tu as une clef auto-incrémentée, il faut que tu nommes explicitement les colonnes que tu renseignes, dans l'ordre dans lequel tu les mets dans la liste qui suit VALUES

    Code sql :

    INSERT INTO MaTable(Colonne2, Colonne3,...) VALUES('valeur pour la colonne2', 'Valeur pour la colonne 3',...)


    Ta colonne en autoincrément prendra automatiquement sa valeur

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 156
    Par défaut
    je connaissais le fait de donner avant le VALUES les intitulés de colonne, mais je voulais être sûr qu'il n'y avait pas d'autre possibilité que celle-ci, car lorsqu'il y a plus de 10 colonnes, ça fait long dans la requête

    Et merci pour la précision du vide

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour

    Pour info, les "trou", n'ont aucune importance ! ca ne grossit pas la, puisque justement ils n'y sont pas, et que le vide ne prend pas de place
    Euh, ne fait de ce cas une généralité tu risquerais d'être surpris.

    Je ne connais pas le fonctionnement d'Acces mais sous d'autres sgbd des "trous" suite à des delete qui peuvent prendre de la place.

    edit :avant qu'on me saute dessus, ce n'est pas le saut de numéro de clef qui en prendra mais plutôt l'espace disque engendré par un delete qui peut ne pas être réutilisé.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 156
    Par défaut
    Erf, et je peux le savoir comment si mon SGBD prend de la place ?

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Es-tu as ce point limité en espace disque que tu t'inquiètes déjà de la taille de ta BDD ?
    Parce que si ta BDD est appelée à devenir très grosse, il vaut mieux de suite envisager de passer à un vrai SGBDR en mode serveur.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 156
    Par défaut
    Et bien pour le moment la base serait sur un PC en local et il n'y aurait que ça sur ce pc qui tournerait. Il serait réservé pour le stockage de la BDD.

    Et au premier abord, elle serait amenée a grandir, mais surement pas plus de 100 entrées par table.
    Mais dans le cas où elle devrait grandir et devenir importante, vers quel SGBDR ?

  10. #10
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Fr33dom Voir le message
    mais surement pas plus de 100 entrées par table.
    Ouarf ! C'est ridicule !
    Ne t'inquiète pas pour la place !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Non rassurez-vous, tant que vous ne frôlerez pas quelques centaines de milliers de lignes vous ne devriez pas avoir de soucis.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 156
    Par défaut
    Mdr en effet, c'est ridicule

    Mais pourriez vous me diriger au cas ou, s'il vous plait ?

  13. #13
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Comme toujours, la réponse c'est "ça dépend".
    Je vous invite à potasser le forum dédié.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 156
    Par défaut
    je n'en attendais pas moins de vous

    Encore merci pour votre aide

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    Pour ce qui est de l'espace pris lors des delete, pour le récupérer sous Acces 97, on faisait un compactage, et à l'époque le compactage d'une base access était conseillé comme opération de maintenance régulièrement.

    Je ne pense pas que ça ait changé depuis.
    Cordialement
    Soazig

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 18/02/2014, 18h27
  2. Trouver les trous dans des périodes sur la même table
    Par CinePhil dans le forum Requêtes
    Réponses: 5
    Dernier message: 11/04/2009, 09h56
  3. Réponses: 12
    Dernier message: 26/11/2008, 11h50
  4. ou trouver les samples de 3ds max 6
    Par m_jaz3 dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 20/05/2006, 12h36
  5. Problème pour trouver les MAX
    Par Erakis dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/05/2006, 20h58

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