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 :

Mettre à jour une colonne à partir d'une autre


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 410
    Points : 147
    Points
    147
    Par défaut Mettre à jour une colonne à partir d'une autre
    Salut,

    ça me paraît extrêmement simple et pourtant ça ne fonctionne pas :
    je veux simplement indiquer urgency = 3 dans toutes les lignes où priority = 7.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        update bugs
        set urgency = 3
        where bg_priority = 7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        update bugs
        set urgency = 3
        where bg_id in (select bg_id from bugs where bg_priority = 7)


    Dans les 2 cas j'obtiens le message "Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression."

    Qu'est-ce que je fais mal ?

    (C'est du T-SQL (SQL Server).)

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Votre première syntaxe est parfaitement correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    create table dbo.bugs (urgency integer, bg_priority integer)
    -- Commande(s) réussie(s).
     
    insert into dbo.bugs (urgency, bg_priority) values (0, 7)
    -- (1 ligne(s) affectée(s))
     
    select * from dbo.bugs
     
    urgency     bg_priority
    ----------- -----------
    0           7
     
    UPDATE dbo.bugs
       SET urgency = 3
     WHERE bg_priority = 7
    -- (1 ligne(s) affectée(s))
     
    select * from dbo.bugs
     
    urgency     bg_priority
    ----------- -----------
    3           7
     
    drop table dbo.bugs
    -- Commande(s) réussie(s).

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Waldar
    Votre première syntaxe est parfaitement correcte
    Je dirais même plus !
    Elle ne peut pas donner le message d'erreur que vous indiquez dans votre premier message :
    Citation Envoyé par Peanut
    Dans les 2 cas j'obtiens le message "Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression."
    Il n'y a pas de "subquery" (sous-requête) dans votre première requête !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    Je dirai même encore plus !


    La deuxième requête me semble tout à fait correcte également, au moins sur le plan syntaxique...


    Quelque chose cloche, ce message d'erreur ne devrait apparaitre ni dans un cas, ni dans l'autre !

    Êtes vous sûr des requêtes que vous lancez ?

  5. #5
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 410
    Points : 147
    Points
    147
    Par défaut
    J'ai trouvé !
    Il n'y avait aucun problème avec la requête : un trigger a été ajouté sur la table et il bloque la mise à jour !

    Merci d'avoir enquêté.

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

Discussions similaires

  1. Mettre à jour un champ à partir d'une autre table
    Par leuzar dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/10/2014, 09h53
  2. Réponses: 5
    Dernier message: 29/05/2007, 10h52
  3. [C#] mettre à jour ma bdd à partir d'une datatable
    Par rudhf dans le forum Windows Forms
    Réponses: 17
    Dernier message: 27/04/2006, 14h27
  4. Réponses: 4
    Dernier message: 16/09/2005, 14h49
  5. Réponses: 3
    Dernier message: 09/07/2004, 10h23

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