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

SQL Oracle Discussion :

Comment joindre ces 4 requetes en une seule requete


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Par défaut Comment joindre ces 4 requetes en une seule requete
    Bonjour les amis,
    j'aimerais bien arriver à résoudre un petit problème relatif à la synhetisation de 4 requetes en 1 seule :

    Voici les 4 requetes :

    select
    EFAC.VRP,
    SUM (LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100)) as "supérieur à 199"
    from
    EFAC, LFAC
    where lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='SUP 200'
    group by
    EFAC.VRP;


    select
    EFAC.VRP,
    SUM (LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100)) as "Inférieur à 199"
    from
    EFAC, LFAC
    where lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='INF 200'
    group by
    EFAC.VRP;

    select
    EFAC.VRP,
    SUM (LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100)) as "MODEM"
    from
    EFAC, LFAC
    where lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='MODEM'
    group by
    EFAC.VRP;

    select
    EFAC.VRP,
    SUM (LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100)) as "recharge aux revendeurs"
    from
    EFAC, LFAC
    where lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.fam='RECHARGE' AND EFAC.REM <> 0
    group by
    EFAC.VRP;






    est ce possible de faire un seul affichage pour les quatre dans le même tableau :

    vendeur Sup 199 Inf. 199 Recharge revendeur Modem


    Oracle 10g

  2. #2
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Par défaut
    essaye de mettre les meme alias et tu fait un UNION entre les requetes

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Par défaut
    Citation Envoyé par adiltyane Voir le message
    essaye de mettre les meme alias et tu fait un UNION entre les requetes
    çà ne va pas marcher, puisque je veux pour chaque critère un affichage dédié,

    le but pour moi c'est de connaître les réalisations de ces vendeurs par type de vente,

    Vendeur 1 | sup199 | Inf199 | Modem | Recharge revendeur

    Vendeur 1 | 2340 | 1444 | 2345 | 23456

    Vendeur 2 | 435666 | 12345 | 1245 | 13456

  4. #4
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Par défaut
    essayer d'utiliser un decode je sais pas si ca va marcher mais c'est une idee

    select
    EFAC.VRP,
    SUM (decode(lfac.typa,'SUP 200',LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100,0)) as "supérieur à 199",
    SUM (decode(lfac.typa,'INF 200',LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100,0)) as "Inférieur à 199",
    SUM (decode(lfac.typa,'MODEM',LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100,0)) as "MODEM",
    SUM (decode(lfac.typa,'RECHARGE',LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100,0)) as "recharge aux revendeurs"
    from
    EFAC, LFAC
    where lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='SUP 200'
    or
    lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='INF 200'
    or
    lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='MODEM'
    or
    lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.fam='RECHARGE' AND EFAC.REM <> 0
    group by
    EFAC.VRP;

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut


    Oui ça va marcher, une petite simplification du code
    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
    SELECT
    	efac.vrp,
    	SUM (DECODE(lfac.typa,'SUP 200',lfac.qte * lfac.prixu * ((100- lfac.rem)/100,0)) AS "supérieur à 199",
    	SUM (DECODE(lfac.typa,'INF 200',lfac.qte * lfac.prixu * ((100- lfac.rem)/100,0)) AS "Inférieur à 199",
    	SUM (DECODE(lfac.typa,'MODEM',lfac.qte * lfac.prixu * ((100- lfac.rem)/100,0)) AS "MODEM",
    	SUM (DECODE(lfac.typa,'RECHARGE',lfac.qte * lfac.prixu * ((100- lfac.rem)/100,0)) AS "recharge aux revendeurs"
    FROM EFAC, LFAC
    WHERE lfac.nof = efac.nof 
    AND efac.datecrea BETWEEN '01/12/2007' AND '14/12/2007' 
    AND (
    	(lfac.typa IN ('SUP 200', 'INF 200', 'MODEM'))
      OR
    	(lfac.fam='RECHARGE' AND efac.rem <> 0)
    	)
    GROUP BY efac.vrp;

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/01/2007, 15h52
  2. integrer deux requetes dans une seule requete access
    Par laurent.w dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/12/2006, 15h11
  3. 2 Requetes en une seule procédure stockée
    Par jeff37 dans le forum Oracle
    Réponses: 3
    Dernier message: 14/11/2005, 15h43
  4. Resultat requete dans une seule colonne
    Par mathieu--g dans le forum Sybase
    Réponses: 2
    Dernier message: 08/07/2003, 13h42

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