Bonjour, je ne suis pas expert des requêtes un peu spéciales qui dépassent le update set.. where... :)
J'ai tenté pas mal de chose mais rien ne fonctionne, je m'explique.
- Je dois mettre a jour un champs dans table1 selon une valeur de table2
- Table2 est lié avec table1 sur num
- je ne veux que la derniere valeur insérée dans table2 concernant mon num.
Imaginons, client (table1) et commande (table2)
En analysant, mon schema est le suivant :
Pour un numclient donné, je recupere la derniere datecommande dont jai besoin dans commande :
1)
select datecommande from
(select * from commande where numclient=123 order by idcommande desc)
where rownum=1
==> (equivalant à un TOP(1))
ca fonctionne, ca me renvoie bien la derniere commande pour mon client 123
2) Maintenant, Je dois mettre a jour TOUTE ma table client, en mettant pour chacun dans le champs dernieredatecommande sa derniere date de commande de la table commande :)
j'ai fais un truc dans le genre :
update client
set datedernierecommande=(select datecommande from (select * from commande order by idcommande desc) where rownum=1)
and exists
(select * from commande where commande.numclient=client.numclient);
Evidemment, Le resultat attendu n'est pas celui là, ca me met la derniere date commande a tous mes clients, mais pas la leur :)
Ce n'est peut etre pas tres clair, mais pour plus de précision n'hesitez pas.
Note : les tables client et commandes sont fictives, evidemment que là c'est idiot comme raisonnement, mais le but est de mettre a jour mon champs dans table1 suivant le resultat de la sous requete de table2)