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

Langage SQL Discussion :

Update Requete Oracle


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut Update Requete Oracle
    Bonjour !!

    -----------------------------
    | CUR | NOM | CUR_NOUVEAU |
    -----------------------------
    | CUR1 | NOM1 | |
    | CUR2 | NOM1 | |
    | CUR3 | NOM1 | CUR_NEW_3 |
    | CUR4 | NOM1 | CUR_NEW_4 |
    -----------------------------

    Comment faire un update pour obtenir les données ci dessous :

    -----------------------------
    | CUR | NOM | CUR_NOUVEAU |
    -----------------------------
    | CUR1 | NOM1 | CUR_NEW_3 |
    | CUR2 | NOM1 | CUR_NEW_4 |
    | CUR3 | NOM1 | CUR_NEW_3 |
    | CUR4 | NOM1 | CUR_NEW_4 |
    -----------------------------

    La difficulté est la suivante
    Comment faire un update en fonction du nom ..?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE table t1 SET CUR =
    SELECT CUR_NOUVEAU
    FROM table t2 WHERE 
    t1.nom = t2.nom
    Il ne faut pas que la ligne CUR2 est un CUR_NOUVEAU=CUR_NEW_4.

    Merci pour vos réponses !

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Quelques incohérences dans votre message...
    D'abord vous dites :
    Comment faire un update pour obtenir les données ci dessous :

    -----------------------------
    | CUR | NOM | CUR_NOUVEAU |
    -----------------------------
    | CUR1 | NOM1 | CUR_NEW_3 |
    | CUR2 | NOM1 | CUR_NEW_4 |
    | CUR3 | NOM1 | CUR_NEW_3 |
    | CUR4 | NOM1 | CUR_NEW_4 |
    -----------------------------
    Ensuite vous dites :
    Il ne faut pas que la ligne CUR2 ait [strike]est[/strike] un CUR_NOUVEAU=CUR_NEW_4.
    Ensuite, votre requête ne met pas à jour la colonne CUR_NOUVEAU comme le laisse supposer le résultat attendu mais la colonne CUR !

    Bref, il va falloir nous expliquer ça d'une autre façon si vous voulez une réponse.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    En effet, merci d'avoir relevé les deux erreurs.

    La requête doit bien updaté la colonne CUR_NOUVEAU et non CUR :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE TABLE t1 SET CUR_NOUVEAU =
    SELECT CUR_NOUVEAU
    FROM TABLE t2 WHERE 
    t1.nom = t2.nom
    C'est effectivement faux :
    Il ne faut pas que la ligne CUR2 ait [strike]est[/strike] un CUR_NOUVEAU=CUR_NEW_4.
    Il ne faut pas que la ligne CUR2 ait un CUR_NOUVEAU=CUR_NEW_3.
    !

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Le problème, c'est que dans ton exemple de données, toutes les lignes ont pour valeur NOM1 dans la colonne NOM.
    Qu'est-ce qui justifie alors que CUR1 doive avoir CUR_NEW_3 et que CUR2 doive avoir CUR_NEW_4 ?

    Le besoin exprimé manque encore de précision !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. requete oracle
    Par z.e.k dans le forum Oracle
    Réponses: 7
    Dernier message: 16/03/2006, 09h40
  2. transformation d'une requete oracle en mysql
    Par isa21493 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/03/2006, 16h00
  3. [REQUETE ORACLE] Vols avec ou sans escales
    Par e-lifestyle dans le forum Oracle
    Réponses: 7
    Dernier message: 06/01/2006, 22h46
  4. UPDATE TABLE ORACLE
    Par Poisson59 dans le forum Oracle
    Réponses: 10
    Dernier message: 30/11/2005, 15h24
  5. [sgbd]Optimisation des requetes Oracle/Perl
    Par linou dans le forum SGBD
    Réponses: 7
    Dernier message: 30/06/2005, 18h09

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