sql : requête select MAX(champ) from table

WRInaute accro
j'ai un problème :

je fais un select max sur un champ d'une table qui contient un grand nombre et celui ci me retourne -1


y a t-il une limitation de l'usage de cette fonction sql ? (en terme de stockage je pense..)


edit : une autre question au passage :?

un champ autoincrémenté : si on lui réafecte un numéro id qui à été supprimé, cela pose t-il problème à quelque chose/ quelque part ?

merci de votre aide j'en ai besoin,
je me casse la tête en ce moment :oops: :(
 
WRInaute accro
apparement pour le max et/ou min c'est normal :

il prend -1 -2 etc...à partir du plus haut indice numérique de manière à ce que l'on soustrait pour trouver le résultat ... fallait le savoir..

si vous avez de la doc dessus je suis preneur, j'ai que pu constater en testant.


=> et pour l'histoire de l'auto incrémentation je veux bien que vous m'aiguillez...je sais qu'il y a des connaisseurs ici :)

merci d'avance
 
WRInaute passionné
tu ne peux pas renseigner un champ auto incrementé c'est justement le but de l'auto incrementation

rog
 
WRInaute discret
Bah si on peut réattribuer un champs même s'il y a un auto incrément dessus :?

Simplement faut faire gaffe à ne pas utiliser un nombre déjà utilisé, vu que l'autoincrément impose d'avoir une clef primaire (ou du moins unique) dessus je crois
 
WRInaute passionné
c'est quoi ça comme réponse ?
8O

tu vas le dé auto incrémenter pour le renseigner ??

donc au moment au tu le renseigne il n'a plus l'attribut auto incrément ?

donc tu ne renseigne pas un champ auto incrémenté ?

@thierry

conseil de rog : on evite au maximum les requêtes delete, c'est la première source de corruption de table

rog
 
WRInaute discret
Bah la réponse à sa question.

Il n'y a pas de "dé autoincrementage" à faire, le champs n'est pas asservit à cet attribut "autoinscrement". L'auto inscrément c'est juste un truc qui te met un "MAX + 1" dans ton champs si tu ne lui précise pas de valeur particulière.

Donc si tu fait un insert avec la valeur "12", mysql va tenter de mettre la valeur 12. Si elle n'existe pas déjà, ça fonctionne, sinon, ça va planter parcequ'il y aura un pb de Duplicate entry sur la key qu'il y a sur le champs.
Et si tu met rien, usage classique d'une colonne avec l'autoincrément, mysql y met directement la valeur "MAX(colonne) + 1", et pas de problème

Edit : c'est valable en myisam, pour innodb je crois que c'est différent, à vérifier (juste pour l'histoire de la valeur insérée par l'auto inscrément)
 
WRInaute accro
ok donc ça c'est faisable, je le savais déjà plus ou moins, car j'ai fais des tests, en revanche ma question était plus posée dans le sens :

est-ce que cela peut poser problème ?

(par exemple dans l'index ? faut-il le remettre à jour ? quelque chose comme ça quoi, étant donné que l'on se ressert, dans mon cas, d'un id qui avait déjà été utilisé)

merci pour votre aide :wink:
 
WRInaute passionné
thierry8 a dit:
ok donc ça c'est faisable, je le savais déjà plus ou moins, car j'ai fais des tests, en revanche ma question était plus posée dans le sens :

est-ce que cela peut poser problème ?

(par exemple dans l'index ? faut-il le remettre à jour ? quelque chose comme ça quoi, étant donné que l'on se ressert, dans mon cas, d'un id qui avait déjà été utilisé)

merci pour votre aide :wink:

Ca pose aucun problème, l'auto incrémentation reprend comme si tu n'avait rien inséré quand tu ne renseigne plus l'id

Exemple, tu as les id suivants: 1 - 2 - 4 - 5 - 7 - 8 - 9

tu insères dans ta base une ligne avec un id=3
Ta prochaine insertion sans renseigner l'id sera id=10
vu? ;-)
 
WRInaute accro
ok je préfère confirmer un truc :oops:


j'ai les enregistrements suivant :

1 - 2 - 3 - 4 - 5 - 6 - 7 - 8

je supprime l'enregistrement 3

puis j'ajoute à nouveau un enregistrement et je reprend un id qui était déjà attribué, mais qui à été supprimé, donc l'id 3

cela ne créé pas de problèmes dans la bdd particulièrement avec l'index.
 
WRInaute accro
FlorentP a dit:
Non, pas de problème... d'ailleurs où voudrais-tu que ça pose problème ? :?
ouai, nan c'est clair je suis trop con !

<mode désolé : je suis complètement à la ramasse en ce moment, je vais faire une pose WRI : pas que WRI d'ailleurs>

merci à toi de m'avoir aidé.
 
Discussions similaires
Haut