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 du Club
    Inscrit en
    Avril 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 71
    Points : 46
    Points
    46
    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 847
    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 847
    Points : 52 962
    Points
    52 962
    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 : 42
    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
    Points : 3 173
    Points
    3 173
    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à
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  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 : 42
    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
    Points : 3 173
    Points
    3 173
    Par défaut
    F254
    F1056
    C'est un portage de base COBOL ou quoi???
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  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 847
    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 847
    Points : 52 962
    Points
    52 962
    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 : 42
    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
    Points : 3 173
    Points
    3 173
    Par défaut
    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.
    MCTS Database Development
    MCTS Database Administration

  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
    Points : 13 092
    Points
    13 092
    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