Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
964 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  update if exists sur une meme table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

update if exists sur une meme table

n°1221135
mandracke7​6
Posté le 12-10-2005 à 13:31:10  profilanswer
 

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.
 

mood
Publicité
Posté le 12-10-2005 à 13:31:10  profilanswer
 

n°1221163
mandracke7​6
Posté le 12-10-2005 à 14:08:35  profilanswer
 

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

n°1221182
Beegee
Posté le 12-10-2005 à 14:31:14  profilanswer
 

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 :
  1. CREATE TABLE fp_active
  2. (client NUMBER(9),
  3. compte NUMBER(9),
  4. code NUMBER(9),
  5. date_debut_validite DATE,
  6. etat VARCHAR2(1)
  7. );
  8. (Table created)
  9. UPDATE fp_active f1
  10. SET etat = 'A'
  11. WHERE f1.date_debut_validite =TO_DATE('20050921','YYYYMMDD')
  12. AND f1.etat ='F'
  13. AND EXISTS(
  14. SELECT 1
  15. FROM fp_active f2
  16. WHERE  f1.client = f2.client
  17. AND f1.compte = f2.compte
  18. AND f1.code = f2.code
  19. AND  f2.date_debut_validite = TO_DATE('20051021','YYYYMMDD')
  20. AND f2.etat = 'A');
  21. (0 rows updated)


Message édité par Beegee le 12-10-2005 à 14:35:17
n°1222797
mandracke7​6
Posté le 14-10-2005 à 10:26:33  profilanswer
 

[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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  update if exists sur une meme table

 

Sujets relatifs
dupliquer une table sql[RESOLU][Access / SQL] Erreur OVERFLOW lors de l'update de ma BDD !
Update d'un fichier XML (PHP 5)update de données sur plusieurs lignes
[TABLE/CSS] Tableau avec ascenseur ![c] recuperer infos sur la table de routage
UPDATE sous MySQL + fonctions string ?definir une clé primaire apres la creation d'une table, en SQL
afficher enregistrements d'une table dans le corps du mailgénéraliser mon model de table
Plus de sujets relatifs à : update if exists sur une meme table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR