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 variable bizarre


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2008
    Messages : 144
    Par défaut Update variable bizarre
    Bonjour à tous,

    Voici mon problème
    J'ai une table client avec plusieurs colonnes et une table modification qui m'indique quel client a été modifié et quel champ
    j'ai imagine une requete du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update  client C
    set (select M.champ_modif from table_modif M where M.id=c.ID)
    Values  (select B.new_value from table_modif B where B.id=c.ID)
    Mais je sais que ca n'a aucune chance de marcher

    Cordialement,

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 660
    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 660
    Billets dans le blog
    10
    Par défaut
    En effet, ça ne fonctionnera pas car la syntaxe de votre requete est invalide, SET doit faire référence à des colonnes de la table à mettre à jour.

    La bonne syntaxe est du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Update ma_table
    set col1=val1, col2=val2...
    where...
    Si vous voulez utiliser une requête imbriquée pour alimenter vos colonnes, ça donne donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Update ma_table
    set col1=(select colx from table2 where...)
       ,col2=val2...
    where...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2008
    Messages : 144
    Par défaut
    Oui mais dans votre exemple je ne connais pas col1 à l'avance, c'est bien mon probleme , c'est que je ne connais pas à l'avance quel colonne je dois modifier

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 660
    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 660
    Billets dans le blog
    10
    Par défaut
    Mais quel est le but de la manœuvre ? si toutes les colonnes de la table sont modifiées, vous allez créer autant d'ajouts dans votre mouchard qu'il y a de colonnes dans la table modifiée ?
    C'est acceptable si la table a très peu de colonnes et qu'elle est peu modifiée, mais c'est quand même pas top comme archi, et si les MàJ sont nombreuses vous allez multiplier les i/o sur votre table mouchard.
    Une possibilité : créer un trigger dans lequel vous comparez toutes les valeurs old et new, colonne par colonne, et vous stockez en une seule fois dans la table mouchard l'ensemble des colonnes impactées ou non (avec un indicateur disant si modif ou non + une colonne supplémentaire donnant l'horodatage de MàJ + une colonne donnant le user de MàJ)
    Autre possibilité, beaucoup plus classique, faire une copie avant MàJ par un trigger dans une table bis

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2008
    Messages : 144
    Par défaut
    en fait j'ai extrait ma base client de mon erp, et ensuite je vais extraire la derniere journee de ma table modif tous les soirs,
    dans cette table modif il peut y avoir autre chose que des clients
    ex
    id-modif table_modif champ_modif new_value

    donc je n'ai pas trop le choix

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    Quel est votre besoin fonctionnel ? parce qu'il existe sans doute des techniques ou des outils pour faire ce que vous voulez...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Comportement bizarre de variables d'applications
    Par ahage4x4 dans le forum ASP
    Réponses: 2
    Dernier message: 14/11/2005, 12h51
  2. [MySQL] Update de variable
    Par tyarak dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/10/2005, 03h59
  3. [CGI]problème update de variable de session
    Par LE NEINDRE dans le forum Web
    Réponses: 1
    Dernier message: 18/10/2005, 11h50
  4. Réponses: 11
    Dernier message: 07/04/2005, 11h20
  5. UPDATE avec des variables Delphi ...
    Par Kokito dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/03/2004, 23h35

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