Lister variables non existantes d'une table SQL ?

WRInaute occasionnel
Bonjour,

J'ai besoin d'un gros coup de main, car là je sèche totalement sur mon problème, voici donc mon cas de figure :

J'ai une table avec la variable "idsite" en auto incrémentation

exemple a dit:
idfiche 1
idfiche 2
idfiche 3
idfiche 4
idfiche 5
idfiche 6
idfiche 7
idfiche 8
idfiche 9
idfiche 10

Maintenant imaginons que je supprime les fiches numéro 2 & 6, avec l'autoincrementation ces dernières ne sont jamais remplacées

ce qui donne dans la base

exemple a dit:
idfiche 1
idfiche 3
idfiche 4
idfiche 5
idfiche 7
idfiche 8
idfiche 9
idfiche 10
idfiche 11
idfiche 12
etc... pour chaque nvlle fiche

Comment puis je donc avec une commande php/sql pouvoir lister les id manquantes ? En d'occurrence le résultats de la requette serait les idfiches 2 & 6

J'espère m'être bien fait comprendre :roll:
 
WRInaute accro
Quelle en serait l'utilité ?

Si c'est pour combler les trous lors d'un insert, suffit de faire une requête avant d'insérer, et de récupérer le premier ID inexistant, après avoir trié les enregistrement par id croissant. Suffit de tester dans le parcours du recordset, que l'id sur lequel tu es est égal au précédent+1.

Mais suivant le nombre d'enregistrement dans ta base ça peut vite être lourd...

Il y a un début de réflexion à ce sujet ici par ailleurs : http://www.phpcs.com/codes/TROUVER-PROCHAIN-ID-LIBRE_44056.aspx
 
WRInaute accro
amokk a dit:
Bonjour,

J'ai besoin d'un gros coup de main, car là je sèche totalement sur mon problème, voici donc mon cas de figure :

J'ai une table avec la variable "idsite" en auto incrémentation

exemple a dit:
idfiche 1
idfiche 2
idfiche 3
idfiche 4
idfiche 5
idfiche 6
idfiche 7
idfiche 8
idfiche 9
idfiche 10

Maintenant imaginons que je supprime les fiches numéro 2 & 6, avec l'autoincrementation ces dernières ne sont jamais remplacées

ce qui donne dans la base

exemple a dit:
idfiche 1
idfiche 3
idfiche 4
idfiche 5
idfiche 7
idfiche 8
idfiche 9
idfiche 10
idfiche 11
idfiche 12
etc... pour chaque nvlle fiche

Comment puis je donc avec une commande php/sql pouvoir lister les id manquantes ? En d'occurrence le résultats de la requette serait les idfiches 2 & 6

J'espère m'être bien fait comprendre :roll:

Ca ne va probablement pas t'aider beaucoup, mais avec postgresql on ferait:

select i from (select generate_series(1,100) as i) s where not exists (select * from table where id = i);

Je ne sais pas s'il y a l'équivalent en mysql. S'il n'y a pas, tu peux créer une table qui contienne toutes les valeurs de 1 à max(id), ça fera la même chose.

Jacques.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut