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

Langage SQL Discussion :

Sous requête possible ?


Sujet :

Langage SQL

  1. #1
    Membre expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 163
    Points : 3 701
    Points
    3 701
    Par défaut Sous requête possible ?
    Bonjour à tous,

    j'ai une requête comme ceci :
    selectrsoc_abr,
    SUM(e.PrixAchat) as 'PrixAchat',
    SUM(e.PrixHT) as 'PrixHT'


    from element e,clipro2, affaire_bis ab
    where

    (
    (e.prixHT = 0 and
    e.fournisseur_id = clipro2.idClient)

    OR

    (e.PrixAchat = 0 and
    e.CliPro2_idCliPro2 = clipro2.idclient and
    rsoc_abr = 'AvivA By')
    )

    and

    e.idDoc = ab.id_affaire and
    primkey=8162 and
    numordre=5 and
    e.clipro2_idclipro2 <> 195 and
    CLIPRO2.RSOC_ABR <> '' and
    e.CatReport_IdCatReport <>'14'
    group by rsoc_abr

    Celle-ci me donne le résultat qui suit :

    La ligne 1 correspond au prix de vente toal des 3 autres lignes et les 3 autres lignes donnent le prix d'achat mais il me manque le total. Ce que je n'arrive pas à faire c'est une sous requête qui permet d'avoir le prix d'achat total ce qui me permetterai de retrouver plus facilement le prix de vente unitaire de tous les lignes.

    Merci pour vos suggestions.

    PS : la requête va servir dans un logiciel de reporting : Ireport.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Bonjour,

    pour aider les autres à vous aider, merci de :

    - Préciser la structure des tables
    - Indiquer le SGBD utilisé
    - Exprimer le résultat souhaité en français
    - Montrer le code que vous avez fait en utilisant les balises CODE pour clarifier votre message
    - Commenter le résultat obtenu par rapport au résultat escompté


    En dehors de ça, je peux déja vous dire que vous essayez de produire une requête qui vise à de la présentation des données. Ce n'est pas l'usage de SQL (voir cet article : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9) Il est mauvais de vouloir présenter grâe à une des aggrégats et des lignes de détail comme indiqué dans votre message :

    a ligne 1 correspond au prix de vente toal des 3 autres lignes et les 3 autres lignes donnent le prix d'achat mais il me manque le total. Ce que je n'arrive pas à faire c'est une sous requête qui permet d'avoir le prix d'achat total ce qui me permetterai de retrouver plus facilement le prix de vente unitaire de tous les lignes.
    C'est un travail à effectuer par l'outil de reporting.

  3. #3
    Membre expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 163
    Points : 3 701
    Points
    3 701
    Par défaut
    Citation Envoyé par vmolines Voir le message
    Bonjour,

    pour aider les autres à vous aider, merci de :

    - Préciser la structure des tables
    - Indiquer le SGBD utilisé
    - Exprimer le résultat souhaité en français
    - Montrer le code que vous avez fait en utilisant les balises CODE pour clarifier votre message
    - Commenter le résultat obtenu par rapport au résultat escompté


    En dehors de ça, je peux déja vous dire que vous essayez de produire une requête qui vise à de la présentation des données. Ce n'est pas l'usage de SQL (voir cet article : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9) Il est mauvais de vouloir présenter grâe à une des aggrégats et des lignes de détail comme indiqué dans votre message :



    C'est un travail à effectuer par l'outil de reporting.
    Merci de voter réponse. La structure des tables est la suivante :
    • Table Element pour les objets avec le prixAchat et prixVente
    • Table Clipro2 avec le nom des clients (connecté par element.Clipro2_idClipro2) ou soit fournisseurs des élements (dans ce cas là connecté par Element.fournisseur_id et Clipro2.idclient)
    • Enfin la table Affaire_bis mais ici ne sert pas vraiment pour trouver le prix.

    Les données sont sur SQL-Server et voici le code balisé cette fois :
    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
    rsoc_abr,
    SUM(e.PrixAchat) as 'PrixAchat',
    SUM(e.PrixHT) as 'PrixHT'
     
     
    from element e,clipro2, affaire_bis ab
    where 
     
    (
    (e.prixHT = 0 and 
    e.fournisseur_id = clipro2.idClient) 
     
    OR
     
    (e.PrixAchat = 0 and
    e.CliPro2_idCliPro2 = clipro2.idclient and
    rsoc_abr = 'AvivA By')
    )
     
    and
     
    e.idDoc = ab.id_affaire and
    primkey=8162 and
    numordre=5 and
    e.clipro2_idclipro2 <> 195 and
    CLIPRO2.RSOC_ABR <> '' and 
    e.CatReport_IdCatReport <>'14'
     
     
    group by rsoc_abr
    Malheureusement comme vous l'avez dit, c'est l'objet du logiciel de reporting de faire la présentation. Mais ayant essayé de faire les sous rapports avec Ireport, le rapport une fois compilé ne m'indique pas ce que je souhaiterai càd
    retrouver les prix de vente unitaire.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Dans la mesure où je considère que ce n'est pas à votre requête de faire ce travail et que je connais pas votre application de reporting, je ne peux pas vous aider plus.

  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 904
    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 904
    Points : 51 649
    Points
    51 649
    Billets dans le blog
    6
    Par défaut
    1) indentez votre code SQl, mettez la balise code.
    2) utilisez le JOIN, la syntaxe de jointure dans la clause where est obsolètre depuis 1992. Vous avez 15 ans de retard !
    3) respectez la charte de postage si vous voulez que l'on vous aide :
    a) donnez le nom de votre SGBDR
    b) donnez le DDL de vos tables
    http://www.developpez.net/forums/ann....php?f=37&a=69

    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
    SELECT rsoc_abr,
           SUM(e.PrixAchat) as 'PrixAchat',
           SUM(e.PrixHT) as 'PrixHT'
     
    FROM   element e
           INNER JOIN clipro2 C
                 ON C.idClient = 
                       CASE 
                          WHEN e.prixHT = 0 
                             THEN e.fournisseur_id
                          WHEN e.PrixAchat = 0 AND rsoc_abr = 'AvivA By' 
                             THEN e.CliPro2_idCliPro2
                       END 
           INNER JOIN affaire_bis ab
              ON e.idDoc = ab.id_affaire and 
     
    WHERE  primkey=8162 
    and    numordre=5
    and    e.clipro2_idclipro2 <> 195 
    and    CLIPRO2.RSOC_ABR <> ''
    and    e.CatReport_IdCatReport <>'14'
     
    GROUP BY rsoc_abr
    A +

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

Discussions similaires

  1. Sous-Sous-Requête: Optimisation possible ?
    Par FMaz dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/04/2008, 03h49
  2. Ordonner avec une sous requête ,possible ou pas?
    Par worm1 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/02/2007, 06h23
  3. Requêtes et sous requêtes
    Par lau2nyce dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2004, 15h14
  4. suppression avec sous requête conditionnelle
    Par melmel dans le forum Requêtes
    Réponses: 8
    Dernier message: 18/03/2004, 23h20
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

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