Recherche d'une commande Sql [Résolu]

Signaler
Messages postés
805
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
30 octobre 2010
-
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
-
Salut
je veux savoir deux commandes s'il vous plait, une qui me donne le plus grand nombre qui est dans une colonne, et une qui me cherche un nombre non existant dans la colonne mais plus petit qu'un nombre que j'ai donné,j'explique. j'ai une base ou je stock mes membres avec leur id,
id/pseudo
0 a
1 b
2 c
3 d
4 e
5 f
6 g
7 h
8 i
9 j
10 k

si par exemple le 4 a détruit son compte, ca devient

0 a
1 b
2 c
3 d
5 f
6 g
7 h
8 i
9 j
10 k

et si qlq'un vient s'inscrire , je dois lui attribuer un id, alors je vais pas lui donner le 11 mais le 4, la variable de l'id doit être comme ca

id =le nombre qui n'existent pas dans la colonne id et qui doit être <= (Plus Grand Nombre Dans La Colonne Id +2)

id <= 11// on commece du + ptit au + grand, pour ne pas lui attribuer un 11 dès le départ, mais le faire que s'il n'ya pas d'id libre

Merci, maintenant ma claire question est:
comment recevoir le le nombre qui n'existent pas dans la colonne id et qui doit être <=X??
comment recevoir le Plus Grand Nombre Dans La Colonne Id ??

merci

http://www.devportail.tk

14 réponses

Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
pour ce qui est des bases troué ....

ben ca n'existe pas ....
ce n'est pas parce que tu as une id manquante que ta BDD va se comporter moins bien....au pire elle va prendre un peu plus de place..et encore sur que meme access comble ces petits trous tout seul comme un grand...

mieux vaut utiliser le N° auto et avoir des "trous" que faire une usine pour combler ces "trous"

sinon je rejoins SharpMao en disant que si tu as des pbs en sql une seul adresse :
http://www.sqlfr.com/
Apres si ton pb c'est pas une requete mais la faire tourner depuis C#...

alors la ok...c ici qu'y faut poster...

:o)))

cela dit on repond qd meme ici :o)))

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Qu'est-ce que tu utilise comme base de données ?
La plupart d'entre elles ont un champs qui peu être autoincrémental. Il ne remplira pas la valeur 4 si elle manque, mais cela ne pose en principe pas de problèmes.
As- tu une raison spéciale de vouloir un minimum de trou dans ta table ?
Amicalement, SharpMao
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Un petit détail encore, Ce forum est en principe réservé à c#, et pas à SQL.
Amicalement, SharpMao
Messages postés
805
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
30 octobre 2010

j'utilise une base .mdb, access alors.
en autre, mon prog est fait en c# 99.9%, et le reste son que des ptits minuscules lignes en sql ( que je ne maitrise pas comme tu le vois).
merci, mais est-ce-que acces a ce truc de autoincrémental??
mais je pense que ca pose pas de problème mais commeme une base ordonnée est mieux qu'une troué :-)
merci
http://www.devportail.tk
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Ca existe en Access, il s'agit du type 'NuméroAuto' pour Access en français.
Amicalement, SharpMao
Messages postés
1
Date d'inscription
mercredi 20 octobre 2004
Statut
Membre
Dernière intervention
21 octobre 2004

Salut Fildomen,
Comme l'a dit SharpMao, tu peux utiliser l'autoincrémentation, sinon :
1) Manière d'obtenir le plus grand nombre d'une colonne:

select Max(id)
from <nom de ta table>

2) j'y réfléchi et je te dis

par contre pense à créer une procédure stockée (il me semble que c possible avec access, en tout cas avec sql server ça l'est) qui exécute ta requête. Celle ci est juste appelée dans ton code scharp (avec en paramètre l'id que tu veux insérer) , ce qui permet d'alléger ton code.
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Salut diengdino,
Deux chose:
- Tout d'abord, pas de procédure stockées en Access.
- Ensuite, ta requête donne bien le max d'une colonne, mais pas le plus petit nombre manquant, comme le voulais Fildomen
Amicalement, SharpMao
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
et voila un petit exemple qui devrait aider... :

try
{
System.Data.OleDb.OleDbConnection connect = new System.Data.OleDb.OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb;");
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("SELECT MAX(ID) FROM TA_TABLE_USER", connect);

connect.Open();
int id_user = Convert.ToInt16( cmd.ExecuteScalar() );
connect.Close();
}
catch(Exception xcp)
{
MessageBox.Show(xcp.Message);
}

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
et un dernier pour la route :
http://sqlpro.developpez.com/

le sql de A à Z....
tres pratique ca pourra t'aider pour faire des requetes toutes simples et des trucs un peu plus hard...
un must a bookmarké :big)

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
805
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
30 octobre 2010

merci, eh ben je savais pas qu'un site sql fait partie de codes sources, c'est nouveau. finalement, merci pour vous tous, et vive les bases trouées :-)
mais avant de finir. qui est le plus rapide, sql server ou access????

http://www.devportail.tk
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
jette access....

sql serveur c mieux...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
mais si tu as du mal avec access...
tu risque d'en avoir un peu plus encore avec SQL serveur..

au fait valide les reponses qui te conviennent...
ca servira aux autres...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
1
Date d'inscription
samedi 6 décembre 2003
Statut
Membre
Dernière intervention
14 février 2005

Salut,



J'ai déjà eu ca en VB, pour ma part j'ai crée une table avec les
numéros manquants (remplie lors des effacements). Puis tu vas piocher
le plus petit ID dedans en testant d'abord que la table n'est pas
vide...

Kiskool
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
c une solution...
mais bon je prefere garder mes "trous" que me lancer dans des trucs de ce genre


Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."