Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2011, 15h51   #1
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
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 :
1
2
3
    UPDATE bugs
    SET urgency = 3
    WHERE bg_priority = 7

Code :
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).)
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 16h02   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 434
Points : 10 434
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Votre première syntaxe est parfaitement correcte :
Code :
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).
__________________
Email : http://scr.im/waldar
Waldar est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 16h26   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 003
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 003
Points : 18 265
Points : 18 265
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 16h51   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
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 ?
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 18h19   #5
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
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é.
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h57.


 
 
 
 
Partenaires

Hébergement Web