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 :

[PostGreSQL] Transfert de données d'un table vers une autre


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Points : 126
    Points
    126
    Par défaut [PostGreSQL] Transfert de données d'un table vers une autre
    Bonjour,

    Je cherche à remplir une table à partir d'infos contenues dans une autre table et qui à le meme format (meme base).

    Je parviens à faire ce que je veux en utilisant la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO tableCible ( select * from tableSource );
    Maintenant, j'aimerais faire la meme chose mais avec une structrure légerement différente pour ma tableCible (1 champ en plus).
    Comment puis-je m'y prendre ?
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO tableCible ( select * from tableSource, valChampSup );
    mais cela ne fonctionne pas, existe t'il un moyen de faire cela ?

    Précision: la table cible contient deja des données que je ne dois pas écraser.

    Merci.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Personnellement j'évite d'utiliser "*" dans ce genre de contexte et concernant ta demande tu dois pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSER INTO TABLEDEST
    SELECT COL1, COL2, ..., COLX
    FROM TABLEORIGINE1, ..., TABLEORIGINE2
    D'où ma question : d'où vient valChampSup est-ce une colonne de tableSource, est-ce une constante ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  3. #3
    Membre habitué
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Points : 126
    Points
    126
    Par défaut
    OK.
    Merci pour ta réponse.

    Concernant le champ supplémentaire, il s'agit bien d'une valeur constante.

    J'ai donc teste un syntaxe du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO TABLEDEST (col1, col2, col3, champSup) VALUES
    SELECT COL1, COL2, COL3
    FROM TABLECIBLE, 'constante'
    Masi cela ne fonctionne pas, qu'est ce qui ne va pas ?

    ------
    Pour éclaircir un peu le contexte de ma question, voila ce que je cherche à faire de manière plus globale. Peut-etre existe t'il un autre moyen.

    J'ai une table SOURCE(cle, col1)
    et je souhaite transferer son contenu vers une table CIBLE(cle, FONCTION(col1, param), col2)

    L'utilisation de la FONCTION va modifier le contenu de col1 et col2 va me permettre de connaitre dans quelle mesure.

    L'opération sera répétée plusieurs fois avec un param différent (et donc col2 aussi). La table SOURCE est tjs la meme et la table CIBLE va grossir d'autant d'enregistrements à chaque fois.

    Suis-je assez clair ?
    ------

    PS: je suis sous postgreSQL.

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Et si tu essayes ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO TABLEDEST (col1, col2, col3, champSup) VALUES 
    SELECT COL1, COL2, COL3,  'constante' as COL4
    FROM TABLECIBLE
    ?

  5. #5
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Au pire, tu le fais en deux fois.

  6. #6
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par psychomatt
    J'ai donc teste un syntaxe du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO TABLEDEST (col1, col2, col3, champSup) VALUES
    SELECT COL1, COL2, COL3
    FROM TABLECIBLE, 'constante'
    Masi cela ne fonctionne pas, qu'est ce qui ne va pas ?
    cf la proposition de Magnus : dans un INSERT, le mot-clé VALUES ne peut être utilisé qu'avec une liste de valeurs, mais pas un SELECT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TABLEDEST (col1, col2, col3, champSup)
    (SELECT COL1, COL2, COL3, Constante FROM TABLECIBLE)
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/04/2015, 10h03
  2. [MySQL] href d'une donnée de ma table vers une autre donnée de ma table
    Par <-mini-> dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 27/06/2008, 09h00
  3. Transferer des données d'un table vers une autre
    Par pooi1 dans le forum VBA Access
    Réponses: 4
    Dernier message: 31/05/2007, 01h05
  4. Réponses: 1
    Dernier message: 07/08/2006, 21h14
  5. copier une table vers une autre base de données
    Par Herveg dans le forum Oracle
    Réponses: 3
    Dernier message: 11/01/2005, 14h20

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