|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 17 ![]() |
bonjour à tous
je viens vous voir en espérant pouvoir trouver la meilleure solution à ce que je souhaiterai réaliser (pour info, j'utilise du php pour faire des requetes sur une bdd mysql) j'ai une base de donnée d'utilisateurs où un champ "ID" est différent pour chaque utilisateur. quand un utilisateur se désabonne alors sa ligne correspondant à son "ID" est supprimée dans la base. quand un utilisateur s'abonne, une fonction php recherche le premier ID de libre pour lui affecter celui ci.. pour cela j'ai trouvé deux solutions : 1/ faire une boucle et une requete SELECT pour chaque id jusqu'a temps de trouver un "trou" libre 2/ ou je rappatrie tous les "ID" de ma table et fais une boucle pour tester dans mon resultat là où il y a un trou (éventuel). mes questions sont donc les suivantes : existe-t-il une requete dans mysql qui fait direct pile-poil ce que je demande? ou alors, laquelle de mes deux solutions est la moins gourmande en ressources pour une très très grande base de données? ou bien, existe-t-il une meilleure solutions que celles que je propose? je vous remercie par avance du temps que vous pourrez m'accorder |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 17 ![]() |
j'ai trouvé une solution qui pourrait ptetre le faire..
créer une base de données qui stockera les "ID" que je supprimerai comme ca j'ai qu'une requete a faire pour savoir quel "ID" est libre dans ma table!! l'opération serait la suivante : faire une premiere requete COUNT qui me donnera le nombre de lignes de ma base d'utilisateurs. faire une deuxieme requete qui me dit si la ligne avec le numéro "ID" égal au nombre de lignes existe dans cette meme base. si elle existe c'est qu'il n'y a pas de trou donc je choisis l'ID du COUNT+1, sinon je vais chercher dans ma table secondaire un ID que j'aurai effacé, je l'utilise, et je l'efface de ma table secondaire vu qu'il est réutilisé un peu compliké mais un gain de ressources je pense qu'est ce que vous en pensez?? |
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Bonsoir,
quelque chose comme Code :
SELECT _table.cleunik+1 FROM _table WHERE (_table.cleunik+1) NOT IN (SELECT _table.cleunik FROM _table) LIMIT 1
__________________
Cordialement, Christophe Charron Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 17 ![]() |
salut
nan ca marche pas |
|
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
si, mais il faut rajouter un order by
__________________
Cordialement, Christophe Charron Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature |
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : avril 2006 Messages : 17 ![]() |
bah ca me fait une erreur comme quoi la syntaxe est mauvaise..
Code :
|
||
|
|
00
|
|
|
#7 | |||
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
Code :
SELECT musiciens.ID+1 FROM musiciens WHERE (musiciens.ID + 1) NOT IN (SELECT musiciens.ID FROM musiciens) ORDER BY ID LIMIT 1
__________________
Cordialement, Christophe Charron Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature |
|||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 17 ![]() |
oui il manquait le premier "+1" mais je l'avais retiré car ca ne devait pas poser de probleme : après je peux rajouter le +1 dans mon code php.
sinon il n'y a pas de probleme de tab, et j'ai testé le code dans une requete php, et aussi directement sous phpmyadmin et ca ne marche pas, j'ai toujours la meme erreur.. snif |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 17 ![]() |
et oui ID est un int unsigned
ca ne pourrait pas venir d'un probleme de version de mysql?? par exemple une version qui n'accepterai pas les requetes imbriquées l'une dans l'autre.. j'ai MySQL 4.0.15-max-debug |
|
|
00
|
|
|
#10 | |||
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
Code :
Test fait sur phpMyAdmin 2.7.0-pl1, MySQL 4.1.15 sur un linux fedora a priori, la table est en INNODB. Ma "doc_cleunik" est un bigint(20) Je pourrai faire des essais demain, sur d'autres bases, sur windows et avec d'autres requêteurs ...
__________________
Cordialement, Christophe Charron Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature |
|||
|
|
00
|
|
|
#11 | |
![]() Inscription : juillet 2002 Messages : 537 ![]() |
Citation:
Voir pour réécrire avec une jointure externe gauche http://mysql.developpez.com/faq/?pag..._sous_requetes |
|
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 17 ![]() |
argghhh
c'est pas juste!!! le probleme alors c'est que je ne sais pas quelle version de mysql sera utilisée chez mon futur hebergeur.. (amen ou ovh surement.. il faut que je me renseigne sur les pour ou contres..) que me conseillez vous dans ce cas?? la solution de créer une table qui contiendra tous les ID effacés n'est peut etre pas trop mauvaise nan? |
|
|
00
|
|
|
#13 | |
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
__________________
Cordialement, Christophe Charron Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature |
|
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 17 ![]() |
maieuuu
qu'est ce que je fais alors? sur ovh ils disent : Une fois livré, le serveur est opérationnel pour l'hébergement (Apache 1, mail, admin, PHP 4, MySQL 3 et OVHm) .. j'imagine que chez tous les hebergeurs c la meme, je vais installer une version + neuve je crois et lacher ma vieille version qui m'a tant aidé durant ces années.. snif |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 17 ![]() |
merci à tout les 2 je vais m'upgrader en fait..
alors merci a biglo pour la précision et puis Christophe Charron pour ce style de requete que je ne connaissais pas!! |
|
|
00
|
|
|
#16 | |
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
__________________
Cordialement, Christophe Charron Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature |
|
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 17 ![]() |
a bah vi j'en suis a la 4.. bon.. jvais faire une pause avant de me relancer dans l'aventure
c'est bizarre ils disent la version 3 pour php4 et mysql5 pour php5.. mouais, bref merci pour tout |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com