Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
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 17/03/2011, 17h00   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 60
Points : 14
Points : 14
Par défaut erreur : Only one expression can be specified in the select list when the subquery is not introduced with EXIS

erreur pour mon update :

Code :
1
2
3
4
5
6
7
8
9
UPDATE TMP_GAS_INV_901 SET TMP_GAS_INV_901.F1616 = 
(SELECT DISTINCT cnt.F1616,cnt.F254,cnt.F1032 FROM GAS_COUNT cnt
WHERE cnt.F1032 = 
(SELECT MAX(cnt2.f1032) 
FROM GAS_COUNT cnt2 
WHERE cnt2.F1056=cnt.F1056 AND cnt.F1610=cnt2.F1610 AND cnt.F254=cnt2.F254
 AND 1= (SELECT 1 FROM GAS_MIX MIX WHERE MIX.F1626 = 'SUPER' AND MIX.f1610 = cnt2.F1610))
AND TMP_GAS_INV_901.F254 = CNT.F254 
AND 1= (SELECT 1 FROM GAS_MIX MIX WHERE MIX.F1626 = 'SUPER' AND MIX.f1610 = cnt.F1610))
<<


l.erreur est la suiavante :

Msg 116, Level 16, State 1, Line 9
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

sql me site cette ligne la comme erreur alors que j evoi spas encore la raison :
Code :
AND 1= (SELECT 1 FROM GAS_MIX MIX WHERE MIX.F1626 = 'SUPER' AND MIX.f1610 = cnt.F1610))

Merci
chochatown est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 18h17   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Comment faites vous pour faire renter plusieurs colonnes dans une seule colonne ????

Code :
1
2
3
4
5
                  UPDATE TMP_GAS_INV_901 
--> une colonne : SET TMP_GAS_INV_901.F1616 
                      = (SELECT DISTINCT cnt.F1616, --> une colonne
                                         cnt.F254,  --> deux colonnes
                                         cnt.F1032 ... --> trois colonnes !!!
Commencez par apprendre SQL. Mon site web, comme mon bouquin est fait pour vous aider !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 18h43   #3
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
UPDATE TMP_GAS_INV_901 SET TMP_GAS_INV_901.F1616 =
(SELECT DISTINCT cnt.F1616,cnt.F254,cnt.F1032 FROM GAS_COUNT cnt
WHERE cnt.F1032 =
(SELECT MAX(cnt2.f1032)
FROM GAS_COUNT cnt2
WHERE cnt2.F1056=cnt.F1056 AND cnt.F1610=cnt2.F1610 AND cnt.F254=cnt2.F254
AND 1= (SELECT 1 FROM GAS_MIX MIX WHERE MIX.F1626 = 'SUPER' AND MIX.f1610 = cnt2.F1610))
AND TMP_GAS_INV_901.F254 = CNT.F254
AND 1= (SELECT 1 FROM GAS_MIX MIX WHERE MIX.F1626 = 'SUPER' AND MIX.f1610 = cnt.F1610))
Wow

Citation:
Commencez par apprendre SQL
Difficile de dire autre chose là
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 18h44   #4
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
F254
Citation:
F1056
C'est un portage de base COBOL ou quoi???
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 19h26   #5
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
c'est parce que il doit y avoir 2000 colonnes dans la table et leur donner toutes un nom censé c'est fatiguant.... donc F1, F2, F... , F1999, F2000 c'est plus simple !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 19h29   #6
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Ou des hommage à des noms d'avions célèbres?

Bon j'arrête là...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 23h27   #7
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
[quote=SQLpro;5849118]
@chochatown
ça n'a rien à voir avec votre erreur, la raison de celle-ci vous a deja été expliquée, mais dans votre requete, vous pouvez utiliser EXISTS remplacer :
Code SQL :
1
2
 
AND 1= (SELECT 1 FROM GAS_MIX MIX WHERE MIX.F1626 = 'SUPER' AND MIX.f1610 = cnt2.F1610)
par
Code SQL :
1
2
3
4
5
6
7
 
AND EXISTS (
    SELECT * 
    FROM GAS_MIX MIX 
    WHERE MIX.F1626 = 'SUPER' 
        AND MIX.f1610 = cnt2.F1610
)

Sauf qu'il serait plus intelligent (et probablement plus performant) de faire des jointures !!!!

A +
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h32.


 
 
 
 
Partenaires

Hébergement Web