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 :

Copie/insertion/traitement de valeurs


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut Copie/insertion/traitement de valeurs
    Boujour,

    Un débutant SQL en quête de solution

    J'ai une table TableA qui comporte 5 colonnes (A1 à A5).

    Je voudrais copié cette table TableA dans une table temporaire TableTempB(structure + donnée), pour cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TABLE TableTempB AS SELECT * FROM  TableA
    Ensuite, à partir de cette table temporaire TableTempB, je voudrais creer une troisième table temporaire TableTempC qui aurait trois colonnes (Original_field, sub_field, concat_field).

    1- Dans la 1ère colonne, Original_field, de la table TableTempC, je voudrais insérer toutes les données de la colonne B1 de la table TableTempB, pour cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TableTempC (Original_field) SELECT B1 FROM  TableTempB;
    2- Dans la 2ème colonne, sub_field, de la table TableTempC, je voudrais insérer le résultat de cette requête (soustraire les n premiers champs de la colonne Original_field de la table TableTempC) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT SUBSTR(Original_field,5) FROM TableTempC
    3- Dans la 3ème colonne, concat_field, de la table TableTempC, je voudrais insérer le résultat de cette requête (concaténer une valeur fixe avec le champ sub_field de la table TableTempC) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CONCAT('0010',sub_field) FROM TableTempC
    Voila, mais je n'arrive pas à insérer le résultat de ma requête (point 2) dans ma table.

    Si quéqun pouvait me helpé ???

    Marki,

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Salut,
    T'as essayé un truc du genre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TableTempC (Original_field, sub_field, concat_field) 
    SELECT B1,SUBSTR(B1,5),CONCAT('0010',SUBSTR(B1,5)) FROM  TableTempB;

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut


    Merci beaucoup, ca a bien fonctionné cette petite commande. (Sinon, la j'étais parti sur faire trois table séparé, une avec Original, une avec sub et l'autre avec concat, puis tout regroupé dans une même table ... mais c'est pas super super comme méthode )

    Maintenant, je m'attaque à un deuxième probleme, pour moi en tout cas.
    J'ai ma table temporaire TableTempB qui a 5 colonnes (B1 à B5), et ma table temporaire TableTempC avec ses trois colonnes (Original_field, sub_field, concat_field).
    Je voudrais remplacer la deuxième colonne (B1) de ma table TableTempB par la troisième colonne (concat_field) de ma table B]TableTempC[/B] sachant que le seul et unique lien qu'il y a entre ces deux tables sont la colonne B1 de ma table TableTempB et la colonne Original_field de ma table TableTempC.

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE TableTempB SET B1 = TableTempC.concat_field FROM TableTempC WHERE TableTempB.B1 = TableTempC.Original_field;
    Mais la commande me retourne :
    ORA-00933: SQL command not properly ended sur "FROM".

    Sinon j'ai pensé a rajouter une colonne (ROW_ID) aux deux tables qui aurait un identifiant unique et mais qui permetterait de faire le lien entre les deux, après je ne sais pas du tout comment faire. A voir.

    Pour la requête, je regarde de mon côté....

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour,

    Il manquerait pas quelque chose entre le FROM et le WHERE ?

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Essaie avec cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE TableTempB b 
    SET B1 = (
      select c.concat_field 
      FROM TableTempC c 
      WHERE c.Original_field = b.B1);
    Mais je suis pas sûr d'avoir bien compris le lien entre tes tables, en tout cas je ne pense pas que rowid puisse t'aider à faire le lien.

Discussions similaires

  1. débutant-Insertion dans table valeurs saisies sur formulaire
    Par Michel Hubert dans le forum Access
    Réponses: 2
    Dernier message: 13/04/2006, 09h07
  2. [Oracle] Insert avec récupération valeur de la cle
    Par Silvia12 dans le forum Oracle
    Réponses: 2
    Dernier message: 11/03/2006, 03h28
  3. Réponses: 3
    Dernier message: 14/12/2005, 15h17
  4. [debutant][code] insert multiple de valeurs
    Par topaze dans le forum Oracle
    Réponses: 9
    Dernier message: 29/11/2005, 15h22
  5. [MySQL] Pb d'insertion d'une valeur de champ select dans une Bdd
    Par Mimisator dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 20/10/2005, 18h51

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