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 Firebird Discussion :

Modification d'une colonne d'une table par une autre


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2015
    Messages : 5
    Par défaut Modification d'une colonne d'une table par une autre
    Bonjour,

    Je suis sous firebird et j'utilise Iboconsole
    J'ai 2 tables;
    Table stock: Clé_pièce ,Code_pièce, PUMP
    Table mouvements : Date,Clé_Pièce,Qté, PUMP
    Je voudrais changé les PUMP de la table mouvements par celles de la table stock,
    A noter que la table mouvements contient quelques pièce seulement,
    Quel requête dois-je utilisé?

    J'ai utilisé cette requête mais ça n'a pas marché:
    (
    UPDATE table mouvement
    set table_mouvement.PUMP = table_stock.PUMP
    where
    table.mouvements.cle_piece = tables_stock.cle_piece
    )
    Merci de m'aider car j'ai commis des erreur graves que je dois rapidement les corriger, si non je risque de perdre mon bulot

    Cordialement,

  2. #2
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut
    Bonjour,

    essaye ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    update table mouvement
    set (mouvement.PUMP) = 
        (select stock.PUMP 
        from stock 
        where mouvement.Clé_pièce = stock.Clé_pièce),
    where exists(select 1 from mouvement where mouvement.cle = stock.Clé_pièce);

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2015
    Messages : 5
    Par défaut
    Bonjour et merci pour votre aide,

    J'ai utilisé cette requête,

    UPDATE T_MVT
    SET T_MVT.COUT_U= ( SELECT T_STOCK.PUMP FROM T_STOCK WHERE T_MVT.CLE_PIECE = T_STOCK.CLE_PIECE)
    where exists(select 1 from T_MVT WHERE T_MVT.CLE_PIECE = T_STOCK.CLE_PIECE)

    il me retourne:
    "ISC ERROR MESSAGE:
    Dynamic SQL Error
    SQL error code = -206
    Column unknown
    T_STOCK.CLE_PIECE
    At line 3, column 66"


    Que faire svp?
    A noter que je dois changer tous les lignes de la table mvt par les valeurs existants dans la table stock.

    D'avance merci,
    Cordialement,

  4. #4
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    Ca parait évident
    Column unknown
    T_STOCK.CLE_PIECE
    La colonne n'existe pas !

    attention aux accent pour les noms des tables ......

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2015
    Messages : 5
    Par défaut
    Bonjour,

    J'ai modifié la requête comme suit vu que je suis en multimagasins:


    UPDATE T_MVT
    SET T_MVT.COUT_U= ( SELECT T_STOCK.PUMP FROM T_STOCK WHERE T_MVT.CLE_PIECE = T_STOCK.CLE_PIECE and T_stock.cle_magasin = 1)

    C'est bon avec la base, mais le logiciel ne recalcule pas automatiquement la valeur totale nouvel coût * quantité, j'essayerai de trouver une solution.

    Merci,

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 600
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 600
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par wassimovich Voir le message
    UPDATE T_MVT
    SET T_MVT.COUT_U= ( SELECT T_STOCK.PUMP FROM T_STOCK WHERE T_MVT.CLE_PIECE = T_STOCK.CLE_PIECE and T_stock.cle_magasin = 1)
    Ce serait plus simple si les colonnes des différentes tables portaient le même nom ou un radical commun : pourquoi avoir COUT_U d'un côté et PUMP (à vélo ?) de l'autre ?

    Citation Envoyé par wassimovich Voir le message
    C'est bon avec la base, mais le logiciel ne recalcule pas automatiquement la valeur totale nouvel coût * quantité, j'essayerai de trouver une solution.
    non, la magie n'opère pas avec SQL, soit vous faites une requête qui calcule la nouvelle valeur, soit vous utilisez un trigger qui fera ce calcul à chaque MàJ

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par wassimovich Voir le message
    J'ai modifié la requête comme suit vu que je suis en multimagasins:

    UPDATE T_MVT
    SET T_MVT.COUT_U= ( SELECT T_STOCK.PUMP FROM T_STOCK WHERE T_MVT.CLE_PIECE = T_STOCK.CLE_PIECE and T_stock.cle_magasin = 1)

    C'est bon avec la base, mais le logiciel ne recalcule pas automatiquement la valeur totale nouvel coût * quantité, j'essayerai de trouver une solution.
    Attention cela ressemble à un nouveau sujet or nouveau sujet=nouveau post

    soit vous faites une requête qui calcule la nouvelle valeur, soit vous utilisez un trigger qui fera ce calcul à chaque MàJ
    soit encore vous déclarer valeur totale (dans la même table ? c'est pas clair) comme un champ calculé (COMPUTED BY)

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/05/2015, 10h23
  2. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  3. Réponses: 1
    Dernier message: 07/02/2008, 00h10
  4. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  5. Réponses: 3
    Dernier message: 22/10/2006, 23h15

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