Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2011, 17h02   #1
Débutant
 
Inscription : février 2007
Messages : 261
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 261
Points : 17
Points : 17
Par défaut Modifier l'enregistrement le plus récent

Bonjour, tout le monde

J’ai la table TInfo, cette table contenant les champs suivants :
TInfo (id, nom, prenom, montant, dateReception)

Je veux modifier le montant de la personne de nom‘Test1’ par le montant suivant « 12345 » pour la dernière date de réception

Code :
1
2
3
UPDATE TInfo
SET montant=12345WHERE nom=’ Test1’ AND dateReception = (SELECT max (dateReception) FROM TInfo)
Mais cette requête ne fonctionne pas, c'est-à-dire elle n’a modifié aucune ligne

Et j’essaye aussi cette solution, mais elle a modifié toutes les lignes ce n’est pas que la ligne la plus récente

Code :
1
2
3
4
UPDATE TInfo
SET montant=12345WHERE nom=’ Test1’ 
ORDER BY dateReception DESC
Est-ce que je dois faire une autre solution ? merci de m’aider
sonia5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 17h16   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 445
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 445
Points : 7 532
Points : 7 532
Comme cela ?

Code :
1
2
3
4
5
6
7
8
9
UPDATE  TInfo   inf
SET     montant= '12345'
WHERE   nom = ' Test1'
    AND EXISTS 
        (   SELECT  1 
            FROM    TInfo   dat
            WHERE   inf.nom = dat.nom
            HAVING  inf.dateReception = MAX(dat.dateReception) 
        )
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 00h37   #3
Débutant
 
Inscription : février 2007
Messages : 261
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 261
Points : 17
Points : 17
Merci pour la rèponse
Est ce que je dois faire cette solution:

Code :
1
2
3
4
5
6
7
UPDATE  TInfo   inf
SET     montant= '12345'
WHERE   nom = ' Test1' AND inf.dateReception =   
        (   SELECT  max(dat.dateReception)
            FROM    TInfo   dat
            WHERE   dat.nom = ' Test1') 
        )
ou bien :

Code :
1
2
3
4
5
6
7
8
9
10
 
UPDATE  TInfo   inf
SET     montant= '12345'
WHERE   nom = ' Test1'
    AND EXISTS 
        (   SELECT  1 
            FROM    TInfo   dat
            WHERE   inf.nom = dat.nom
            HAVING  inf.dateReception = MAX(dat.dateReception) 
        )
Laquelle de ces solutions est la plus performante (gagne du temps, memoire...)

Merci à vos aides .
sonia5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 11h31   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Seul un test te le dira
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h19.


 
 
 
 
Partenaires

Hébergement Web