begin process at 2010 02 10 03:06:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Mémroser les 50 derniers clients consultés


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Mémroser les 50 derniers clients consultés

mercredi 28 juin 2006 à 13:30:33 | Mémroser les 50 derniers clients consultés

globule

Bonjour,

J'essaye de faire un programme qui mémorise les 50 derniers clients qui ont été consultés dans mon logiciel.
Chaque nouveau client consulté prend la place du dernier client consulté etc, et les autres sont décalés (le plus ancien client consulté sort de la base)  ...

La table ne dépasse jamais les 50 enregistrements.


Savez vous comment faire ça en requeteSQL. J'avais réussi avec access, en listant les clients triés par date et heure (j'ai un champ date dans la base). Puis je me positionnais sur le dernier enregistrement et je le mettais à jour.

Mais je n'arrive pas à adapter cette routine depuis que je suis sous MySQL. En effet dans le cadre d'un réseau je rencontre des erreurs (enregistrement modifié par un autre utilisateur).
J'en conclu qu'il faille faire ça uniquement en requête (update ...), mais je ne sais pas comment

Merci


 

lundi 3 juillet 2006 à 17:15:26 | Re : Mémroser les 50 derniers clients consultés

goueg83460

il faut que tu aille chercher la date la plus récente enregistré ou leure et ensuite tu na qua faire un champs numero allant de 1 a 50. suivant leure et la numero soit tu fait un update a la ligne suivante si elle n'est pas égale a 50 sinon tu repar a la 1er ligne. moi je ferais com sa
lundi 3 juillet 2006 à 19:38:33 | Re : Mémroser les 50 derniers clients consultés

globule

Oui, mais je voudrais tout faire avec un seule requête. Car en Multi-Utilisateurs je rencontre des problèmes si j'utilise plusieurs requêtes. Mon but est d'avoir une table pre-remplie avec 50 enregistrements, j'ai un champ date, un champ heure et un champ numéro de client. Je voudrais que ça garde l'historique, uniquement en faisant des updates. Mais je ne suis pas assez fort en SQL pour réaliser ça (il faut faire des requêtes imbriqués je pense).

Je pense que ce type de requêtes a déjà été réalisé, merci a celui qui peut m’aider

samedi 8 juillet 2006 à 17:25:25 | Re : Mémroser les 50 derniers clients consultés

Malkuth

Membre Club
imaginont cette table:
TblRecent:ID,ORDER,DATA1,DATA2

Procédure pour ajouter un élément dans la queue:

UPDATE TblRecent
SET
   ORDER=ORDER+1;

DELETE FROM TblRecent
WHERE ORDER >= 50;

INSERT INTO TblRecent
   (ORDER,
   DATA1,
   DATA2,
   ...)
VALUES
   (O,
   @DATA1,
   @DATA2,
   ...);

Ca  devrait être bons mais attention c'est un code SQL Server mais les opération sont simple et devrait pas poser de problème pour être porter sur MySQL

On a donc une liste, ORDER indique l'ordre dans lequel les enregistrement on été entré, c'est plus intéréssant que de stocké la date car on peut réduire le champ a un simple Byte (tinyint SQL Server) donc plus rapide.

Pour éviter les messages d'erreur d'enregistrement je pense qu'il faut voir du coté des mécanisme de Lock et de transaction de MySQL, mais là je peut pas t'en dire plus. C'est assez peu utiliser dans des base de donnée peu solicités mais plus le nombre d'utilisateurs est important plus ces mécanismes doivent faire l'objet d'une étude attentive pour assurer la robustesse du system ce qui implique aussi une gestion des transactions abandonnées.
Bon courage
samedi 8 juillet 2006 à 17:27:42 | Re : Mémroser les 50 derniers clients consultés

globule

Merci,

Mais je ne veux pas utiliser de delete. Uniquement des update (ma table est pre-remplie avec 50 eneregistrements).
samedi 8 juillet 2006 à 17:34:16 | Re : Mémroser les 50 derniers clients consultés

Malkuth

Membre Club
Alors dans ce cas en reprenant les tables d'exemples plus haut :

UPDATE TblRecent
SET
   ORDER=ORDER+1;

UPDATE TblRecent
SET
   ORDER=0,
   DATA1=@DATA1,
   DATA2=@DATA2,
   ...
WHERE ORDER = 50

Bien attendu ca ne marchera que si la tables est prérempli avec 50 lignes dont ORDER varie de 0 a 49.
samedi 8 juillet 2006 à 19:37:18 | Re : Mémroser les 50 derniers clients consultés

Malkuth

Membre Club
Voilà un truc qui devrait t'aider pour les problème d' utilisation concurentiel des données :

LOCK TABLES TblRecent WRITE;

UPDATE TblRecent
SET
   ORDER=ORDER+1;

UPDATE TblRecent
SET
   ORDER=0,
   DATA1=@DATA1,
   DATA2=@DATA2,
   ...
WHERE ORDER = 50;
UNLOCK TABLES;

Ainsi tu est sur que si deux utilisateur diférents effectue
la requette en même temps elle seront bien executer l'une aprés l'autre
Ce mécanisme n'est pas aussi puissant que les transactions mais si tu place les LOCKs
a des moment judicieux tu ne devrai plus avoir de problèmes avec la gestion multi-utilisateur.

J'ai récupérer les infos sur :

[ Lien ]
J'espère <que ca répond a ton problème.

dimanche 9 juillet 2006 à 08:44:19 | Re : Mémroser les 50 derniers clients consultés

globule

Merci je vais etudier ca


Cette discussion est classée dans : client, derniers, clients, consulté, consultés


Répondre à ce message

Sujets en rapport avec ce message

table clients [ par lebienestrare ] Bonsoir,c'est clair je peux lier une tble dossier et une table client,mais comment je peux relier une table dossier avec une table client sachant que Requete spéciale [ par vdbadr ] Salut tout le monde !Je suis en train de developper une base access pour etablir le profil client et je me bute à un probleme :Dans l'une de mes table SQL comment écrire cette requête [ par jmey ] Je cherche une fonction SQL.   Voici le problème :   J’ai un fichier CLIENT e Petit porblème [ par titeuf974 ] Bonjour! Alors voila. G une table client dans laquelle g un champ verif_mail, qui contient une clé générer et envoyé par mail au client. Une fois ke l probleme avec la connection client à MSDE [ par salimdz2004 ] salut j'ai un probleme avec la connection client à MSDE le programme dans le poste local marche tres bien, mais dans le poste client   il ne marche pa Server MySQL et clients [ par jmcombal ] Salut à tous! Ayant 2 ordi, j'ai installer MySQL sur l'un sans changer aucun paramètre. Donc, il s'agit d'une installation pure. Et mon souhait serai requete sur pls bases.... [ par exyacc ] salut, voila, j'utilise msde et j'arrive pas a faire des requetes sur des tables qui se trouvent sur 2 bases differentes.... j'ai essayé genre: INS [trigger] Ajouter le n° de client lors d'une insertion d'enregistrement [ par gderenne ] Bonjour,J'ai développé un Trigger pour concevoir un n° de client de type 2006-00011 afin de l'ajouter à l'enregistrement que mon appli inserera dans l [Access] Update ??? [ par BasicInstinct ] Bonjour tout le monde,Voici mon probleme :J'ai une table Contrats, avec la liste des contrats pour un client... clientID,....... montant......J'ai une application sous reseau [ par nourwahiba ] bonjour j'ai une application vb qui accede a une BD sql serveur j'ai 3 poste 1 serveur et 2 client j'ai installer cettte aplication dans les 2 client


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales