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

Développement SQL Server Discussion :

Ecriture de trois requêtes imbriquées : "Une seule expression peut etre spécifiée (..)" [2008]


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Antilles Néerlandaises

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 62
    Points
    62
    Par défaut Ecriture de trois requêtes imbriquées : "Une seule expression peut etre spécifiée (..)"
    Bonjour

    Mon problème est assez simple j'ai deux table.

    La première ci-dessous imbrique une deuxième table calculant le CA TTC à partir des champs date dbo_DOCPROMO_DP_VENTES.V_DOCDATE et dbo_DOCPROMO_F_DOCENTETE.DO_DateLivr de ma requête principale.

    La sous requête contient une variable fixe (un code article) que j'aimerais remplacer par la liste des articles contenus dans chaque document identifié listé dans la requête principale.

    Donc j'aimerais avoir la liste des code articles du premier document à la place de '00499'
    puis passer au deuxième document de ma requête principale et avoir la liste des articles contenues dans le deuxième document à la place de '00499'
    et ainsi de suite.

    je suppose qu'il doit y avoir moyen de faire autrement ou plus performant mais j'aimerais bien comprendre où ça coince avec cette méthode.

    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
    26
    27
    28
    29
    30
    31
    SELECT
      dbo_DOCPROMO_DP_VENTES.V_DOCNUM,
      dbo_DOCPROMO_DP_VENTES.V_DOCDATE,
      dbo_DOCPROMO_F_DOCENTETE.DO_DateLivr,
      dbo_DOCPROMO_DP_VENTES.V_DOREF,
      (SELECT
      sum(dbo.DP_VENTES_LIGNES.CATTCNet)
    FROM
      dbo.DP_VENTES,
      dbo.DP_VENTES_LIGNES,
      dbo.DP_ARTICLES
    WHERE
      ( dbo.DP_VENTES.V_DOCTYPE=dbo.DP_VENTES_LIGNES.VL_DOCTYPE  )
      AND  ( dbo.DP_VENTES_LIGNES.VL_ART_UK=dbo.DP_ARTICLES.ART_UK  )
      AND  ( dbo.DP_VENTES.V_DOCNUMBIN=dbo.DP_VENTES_LIGNES.VL_DOCNUMBIN  )
      AND  (
      dbo.DP_VENTES.V_DOCDATE  BETWEEN  dbo_DOCPROMO_DP_VENTES.V_DOCDATE AND dbo_DOCPROMO_F_DOCENTETE.DO_DateLivr
      AND  dbo.DP_ARTICLES.ART_NUM  IN  ('00499')
      )
    ) as CATTC
    FROM
      dbo.DP_VENTES AS dbo_DOCPROMO_DP_VENTES,
      dbo.F_DOCENTETE AS dbo_DOCPROMO_F_DOCENTETE,
      dbo.DP_CLIENTS AS dbo_DOCPROMO_DP_CLIENTS
    WHERE
      ( dbo_DOCPROMO_DP_CLIENTS.CLI_UK=dbo_DOCPROMO_DP_VENTES.V_CLI_UK  )
      AND  ( dbo_DOCPROMO_DP_VENTES.V_PK=dbo_DOCPROMO_F_DOCENTETE.CBMARQ  )
      AND  (
      dbo_DOCPROMO_DP_CLIENTS.CLI_NUM  =  'NOM_DOC'
      AND  dbo_DOCPROMO_DP_VENTES.V_CODEAF  =  'SOLDES'
      )
    j'ai essayé de remplacer la variable fixe '00499' par ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT
      dbo_ARTPROMO_DP_VENTES.V_DOCNUM,
      dbo_ARTPROMO_DP_VENTES_LIGNES.VL_ART_NUM
    FROM
      dbo.DP_VENTES AS dbo_ARTPROMO_DP_VENTES,
      dbo.DP_VENTES_LIGNES AS dbo_ARTPROMO_DP_VENTES_LIGNES
    WHERE
      ( dbo_ARTPROMO_DP_VENTES.V_DOCTYPE=dbo_ARTPROMO_DP_VENTES_LIGNES.VL_DOCTYPE  )
      AND  ( dbo_ARTPROMO_DP_VENTES.V_DOCNUMBIN=dbo_ARTPROMO_DP_VENTES_LIGNES.VL_DOCNUMBIN  )
      AND  (
      dbo_ARTPROMO_DP_VENTES.V_DOCNUM  =  'FAI60412'
      )
    Sans succès malgré le fait que mes trois requêtes soit correctement écrites séparément car j’obtiens le message d'erreur :

    "Une seule expression peut être spécifiée dans la liste de sélection quand la sous-requête n'est pas introduite par EXISTS."


    Si quelqu'un pouvait éclairer ma lanterne ...

    Merci bien

  2. #2
    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
    Bonjour,

    pourquoi selectionner deux colonne pour la sous requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT
      dbo_ARTPROMO_DP_VENTES.V_DOCNUM,
      dbo_ARTPROMO_DP_VENTES_LIGNES.VL_ART_NUM
    Le IN est supposé comparer une valeur à une liste de valeurs, pas à une liste de couple de valeurs, ce qui n'a pas de sens ici.

  3. #3
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Antilles Néerlandaises

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 62
    Points
    62
    Par défaut
    Merci aieuuuuu pour cette réponse efficace et rapide ! effectivement c'était ça le problème.
    je vais vérifier les résultats obtenus mais en tout cas plus de message d'erreur.
    J'étais pourtant persuader de n'avoir mis qu'un seul champ... la fatigue sans doute

    Comme quoi a force d'avoir le nez dans quelque chose on finit par ne plus voir l'essentiel.

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

Discussions similaires

  1. rassembler trois courbes .fig en une seule
    Par best12 dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/03/2013, 07h20
  2. faire dans access plusieurs requetes update en une seule
    Par HF974 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 03/02/2009, 16h49
  3. problème requete imbriqué sur une seule table
    Par vanhouten dans le forum Langage SQL
    Réponses: 7
    Dernier message: 30/01/2009, 16h35
  4. [MySQL] requete SELECT retournant une seule ligne
    Par hermann.geiger dans le forum SGBD
    Réponses: 12
    Dernier message: 19/09/2008, 08h34
  5. requete correcte si une seule reponse
    Par xave dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/07/2005, 10h20

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