update if exists sur une meme table - SQL/NoSQL - Programmation
Marsh Posté le 12-10-2005 à 14:08:35
j'ai résolu mon problème en créant une table temporaire avec les rowid de mon select puis faire un update avec une jointure.
Mais si quelqu'un avait la solution pour mon pb cela serait sympa de l'ecrire.
Merci
Marsh Posté le 12-10-2005 à 14:31:14
Quel SGBD ?
Et pourquoi tu peux pas utiliser d'alias dans l'update ?
edit: ça doit être Oracle, vu que tu utilises TO_DATE.
J'ai testé en créant une structure ressemblant à ta table, et l'update avec alias marche très bien :
Code :
|
Marsh Posté le 14-10-2005 à 10:26:33
[Pour information: ma base est de l'oracle. ]
Oui ma base est de l'oracle.
Merci pour le test, je vais voir pourquoi cela ne fonctionnait pas.
Marsh Posté le 12-10-2005 à 13:31:10
bonjour,
je cherche à faire un update if exists sur une même table. Malheureusement je ne peux pas aliasser ma table dans un update, quelqu'un peut il m'expliquer comment faire.
Pour information: ma base est de l'oracle.
voici le select qui fonctionne:
select *
from fp_active f1
where f1.date_debut_validite =to_date('20050921','YYYYMMDD')
and f1.etat ='F'
and exists(
select 1
from fp_active f2
where f1.client = f2.client
and f1.compte = f2.compte
and f1.code = f2.code
and f2.date_debut_validite = to_date('20051021','YYYYMMDD')
and f2.etat = 'A')
voici un update que j'ai essayé mais sans succé car je n'ai pas le même nombre de ligne modifier que dans mon select.
update fp_active
set etat = 'A'
where date_debut_validite =to_date('20050921','YYYYMMDD')
and etat ='F'
and exists(
select 1
from fp_active f2
where client = f2.client
and compte = f2.compte
and code = f2.code
and f2.date_debut_validite = to_date('20051021','YYYYMMDD')
and f2.etat = 'A')
Merci d'avance.