IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Requête récursive pour modifier un champ


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 60
    Points : 47
    Points
    47
    Par défaut Requête récursive pour modifier un champ
    Bonjour,

    Je souhaiterai créer une requete qui remplace mes valeurs de table2.val dans table1.string par ''.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE table1(string VARCHAR2(200));
    INSERT INTO table1 VALUES ('toto toto toto titi toto toto toto toto toto toto toto toto toto tutu');
     
    CREATE TABLE table2 (val VARCHAR2(4));
    INSERT INTO table2 VALUES ('titi');
    INSERT INTO table2 VALUES ('tutu');
    J'ai pensé à faire une requete recursive mais pour le moment, je n'arrive qu'à modifier que titi ou que tutu mais pasles 2 en meme temps.

    Pensez vous qu'il ne soit possible de le faire que par PL/SQL ?

    Merci d'avance,
    Alex

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Non je ne pense pas, en 11gR2 j'ai fait une petite CTE rapidement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    With tab2 (val, rn) as
    (
    select val, rownum from table2
    )
      ,  cte (string, rn) as
    (
    select string, 0
      from table1
     union all
    select replace(t1.string, t2.val, ''), t2.rn
      from cte t1
           inner join tab2 t2
             on t2.rn = t1.rn + 1
    )
    select max(string) keep(dense_rank first order by rn desc) as string
      from cte;
     
    STRING                                                     
    -----------------------------------------------------------
    toto toto toto toto toto toto toto toto toto toto toto toto
    Je ne vois pas de contre indication à faire la même chose avec un CONNECT BY.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Merci Waldar.

    Je sentais que c'etait faisable.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Après il faut aussi vérifier la performance, ça ne m'étonnerait pas que le PL/SQL soit plus rapide pour ce genre d'opération.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête pour modifier un champ 'Ordre'
    Par infosam76 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/01/2014, 00h17
  2. Requête pour modifier un champs TIME
    Par Gouyon dans le forum Requêtes
    Réponses: 6
    Dernier message: 21/04/2009, 17h26
  3. Réponses: 20
    Dernier message: 08/10/2007, 15h01
  4. [MySQL] Erreur pour modifier des champs
    Par kevinf dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2006, 21h47
  5. Probleme de requete UPDATE pour modifier de champs ds DBGRID
    Par cmoimeme dans le forum Bases de données
    Réponses: 26
    Dernier message: 06/12/2005, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo