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

MS SQL Server Discussion :

erreur : Only one expression can be specified in the select list when the subquery is not introduced with EXIS


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 71
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    and 1= (SELECT 1 FROM GAS_MIX MIX WHERE MIX.F1626 = 'SUPER' and MIX.f1610 = cnt.F1610))

    Merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 990
    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 : 21 990
    Billets dans le blog
    6
    Par défaut
    Comment faites vous pour faire renter plusieurs colonnes dans une seule colonne ????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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/ * * * * *

  3. #3
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 795
    Par défaut
    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

    Commencez par apprendre SQL
    Difficile de dire autre chose là

  4. #4
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 795
    Par défaut
    F254
    F1056
    C'est un portage de base COBOL ou quoi???

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 990
    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 : 21 990
    Billets dans le blog
    6
    Par défaut
    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
    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/ * * * * *

  6. #6
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 795
    Par défaut
    Ou des hommage à des noms d'avions célèbres?

    Bon j'arrête là...

  7. #7
    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
    [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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND 1= (SELECT 1 FROM GAS_MIX MIX WHERE MIX.F1626 = 'SUPER' AND MIX.f1610 = cnt2.F1610)
    par
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    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 +

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/09/2014, 11h33
  2. Réponses: 2
    Dernier message: 26/04/2011, 09h58
  3. Réponses: 1
    Dernier message: 04/04/2011, 23h16
  4. Réponses: 2
    Dernier message: 04/02/2009, 13h24
  5. [VB.NET] Error: There can be only one 'page' directive
    Par Redouane dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/11/2004, 19h16

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