Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2011, 13h16   #1
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 156
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 156
Points : 34
Points : 34
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 :
1
2
3
4
5
6
SELECT     MIN([] - 1) AS NextID
FROM         Arbres AS T1
WHERE     ((([] - 1) > 0) AND
                          (((SELECT     []
                               FROM         Arbres T2
                               WHERE     T2.[] = T1.[] - 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
Fr33dom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 14h01   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 985
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 985
Points : 18 232
Points : 18 232
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 14h12   #3
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 156
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 156
Points : 34
Points : 34
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 :
INSERT INTO MaTableVALUES ('000000000A','1121','20','14','161','134','225',True)
Fr33dom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 14h26   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
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
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 14h34   #5
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 156
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 156
Points : 34
Points : 34
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
Fr33dom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 14h59   #6
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
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é.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 15h06   #7
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 156
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 156
Points : 34
Points : 34
Erf, et je peux le savoir comment si mon SGBD prend de la place ?
Fr33dom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 17h06   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 985
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 985
Points : 18 232
Points : 18 232
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/01/2011, 17h17   #9
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 156
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 156
Points : 34
Points : 34
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 ?
Fr33dom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 17h19   #10
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 985
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 985
Points : 18 232
Points : 18 232
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 17h20   #11
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Non rassurez-vous, tant que vous ne frôlerez pas quelques centaines de milliers de lignes vous ne devriez pas avoir de soucis.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 17h23   #12
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 156
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 156
Points : 34
Points : 34
Mdr en effet, c'est ridicule

Mais pourriez vous me diriger au cas ou, s'il vous plait ?
Fr33dom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 17h28   #13
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Comme toujours, la réponse c'est "ça dépend".
Je vous invite à potasser le forum dédié.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 18h01   #14
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 156
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 156
Points : 34
Points : 34
je n'en attendais pas moins de vous

Encore merci pour votre aide
Fr33dom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 19h36   #15
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 552
Points : 552
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
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h30.


 
 
 
 
Partenaires

Hébergement Web