Page 1 sur 1

Récupérer le plus petit numéro disponible lors d'un INSERT

Posté : 07 févr. 2019, 18:55
par calimreo
Bonjour,
je développe une application qui lors de la création du client doit attribuer un numéro de tiroir non utilisé, pour y ranger les clés confiées, et qui libère le tiroir, quand le client récupère sa clé.
Mais je n'arrive pas a réaliser la requête pour le moment j'ai
SELECT MIN(numTiroir) FROM tiroir WHERE numTiroir IS NULL mais cela revoit NULL que faire?

Re: Récupérer le plus petit numéro disponible lors d'un INSERT

Posté : 08 févr. 2019, 09:15
par Spols
Hello,

moi j'ajouterai une jointure sur la table elle même avec en condition que le numtitoir doit être égale à +1 du sien.
ensuite tu cherche un min sur ceux qui ont une jointure nulle

Re: Récupérer le plus petit numéro disponible lors d'un INSERT

Posté : 08 févr. 2019, 10:25
par calimreo
j'ai du coup une requête comme ci dessous mais si ma table est comme ça (2,3,4,6,7,8,9) je veux le 1 mais cela donne le 5
SELECT MIN(t1.numTiroir) + 1 AS numTiroir FROM tiroir t1 LEFT JOIN tiroir t2
ON (t2.numTiroir = t1.numTiroir+1) WHERE t2.numTiroir IS NULL

Re: Récupérer le plus petit numéro disponible lors d'un INSERT

Posté : 08 févr. 2019, 10:44
par calimreo
Au final j'ai procédé autrement j'ai rajouté une colonne libre BOOL (1 pour remplit 0 pour vide) avec cette requête
SELECT MIN(numTiroir) AS numTiroir FROM tiroir WHERE libre=0 comme ça je change juste la colonne libre plus besoin de ajouter ou supprimer un tiroir a chaque fois Merci pour tes conseils