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

Développement SQL Server Discussion :

Cellules de la colonne mis à NULL lors de la requête SQL


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 26
    Par défaut Cellules de la colonne mis à NULL lors de la requête SQL
    Bonjour à tous,

    Avec la requête suivante,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UPDATE MA_BASE.dbo.cncstatable
        SET cncstaexpression = 
            (
              SELECT cncstaexpression
              FROM Kep_Val.dbo.Variables b 
              WHERE 
    		MA_BASE.dbo.cncstatable.cncstahandlecnc =  '59'
    		AND MA_BASE.dbo.cncstatable.cncstahandlestate = b.cncstahandlestate 
             )
    Qui fonctionne eet remplace bien les champs définis par les conditions WHERE, tous les autres champs de la colonne cncstaexpression sont mis à NULL

    Comment faire pour que cette fonction UPDATE ne modifie pas les autres champs de la colonne.

    Par avance merci et cordiales salutations
    André

  2. #2
    Membre chevronné Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Par défaut
    Bonjour André,
    Bonjour à tous,
    il faut que tu rajoutes la table MA_BASE.dbo.cncstatable dans la clause FROM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UPDATE MA_BASE.dbo.cncstatable
    SET cncstaexpression =
    (
    SELECT cncstaexpression
    FROM Kep_Val.dbo.Variables b,  MA_BASE.dbo.cncstatable
    WHERE
    MA_BASE.dbo.cncstatable.cncstahandlecnc = '59'
    AND MA_BASE.dbo.cncstatable.cncstahandlestate = b.cncstahandlestate
    )

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    C'est normal, il faudrait a minima déplacer la condition de filtre dans la requête principale.
    Sinon, toutes les lignes sont mises à jour, certaines à NULL, la sous requête ne renvoyant aucun résultat (justement à cause du filtre)


    sinon, plutôt qu'une sous requête, vous pouvez plutôt faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE C
        SET cncstaexpression = V.cncstaexpression
    FROM MA_BASE.dbo.cncstatable AS C
    INNER JOIN  Kep_Val.dbo.Variables AS V
        ON  V.cncstahandlestate = C.cncstahandlestate
    WHERE C.cncstahandlecnc =  '59'

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 624
    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 624
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par DedeLaMouche Voir le message
    Comment faire pour que cette fonction UPDATE ne modifie pas les autres champs de la colonne.
    Les colonnes sont à la table d'un SGBDR ce que sont les champs à un formulaire de saisie
    Dans une table ou une vue, point de champ, dans une colonne non plus
    quant à UPDATE, ce n'est pas une fonction


    Donc la question est "comment faire pour que cette instruction UPDATE ne modifie pas les autres lignes de la table" et la réponse à été fournie plus haut

  5. #5
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 26
    Par défaut Merci pour votre aide
    Aux personnes qui ont pris le temps de me répondre, un grand merci.
    Le problème est résolu et tout fonctionne à satisfaction.

    Cordiales salutations
    André

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 19/08/2012, 14h31
  2. Réponses: 12
    Dernier message: 24/05/2012, 09h48
  3. Erreurs lors d'une requête SQL
    Par karinya dans le forum Bases de données
    Réponses: 5
    Dernier message: 10/11/2010, 12h27
  4. Utilisation du tablespace TEMP lors d'une requête SQL
    Par dyvim dans le forum Administration
    Réponses: 2
    Dernier message: 31/05/2007, 19h15
  5. [MySQL] Est-ce possible de creer des champs en temps réel lors d'une requête SQL ?
    Par kaptnkill dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/09/2006, 19h18

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