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 :

fusionner requête SQL avec conditions différentes


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut fusionner requête SQL avec conditions différentes
    Bonjour,
    je rencontre un problème avec une requête que j'essaie de faire, mais je ne sais pas si c'est possible.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT right(left(`start_date`,7),2) as Mois
    ,ROUND(SUM(item_total_cost),2) as 'ECM (EUROS)' 
    FROM data_txt 
    WHERE company='Entreprise FRANCE' a
    nd (order_status='Confirmed' OR order_status='Delivered') 
    and course_number_1 LIKE 'EC%' 
    and course_number_2 NOT LIKE 'DIF%' 
    group by right(left(`start_date`,7),2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT right(left(`start_date`,7),2) as Mois
    ,ROUND(SUM(item_total_cost),2) as 'DIFF (EUROS)' 
    FROM data_txt 
    WHERE company='Entreprise FRANCE' 
    and (order_status='Confirmed' OR order_status='Delivered') 
    and course_number_2 LIKE 'DIF%' 
    group by right(left(`start_date`,7),2)
    La colonne commune est Mois, mais je voudrais obtenir le résultat suivant a partir de ces deux requêtes :

    MOIS || ECM (EUROS) || DIFF (EUROS)

    est-ce possible.

    Merci d'avance pour les réponses.

  2. #2
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Vous pouvez dans un premier temps faire une jointure entre ces 2 requetes

    Bon courage

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 485
    Par défaut
    Bonjour,
    Tu peux faire ceci:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      SELECT RIGHT(LEFT(`start_date`, 7), 2) AS Mois
           , ROUND(SUM(case when course_number_1 LIKE 'EC%' AND course_number_2 NOT LIKE 'DIF%' then item_total_cost else 0 end), 2) AS 'ECM (EUROS)'
           , ROUND(SUM(case when course_number_2 LIKE 'DIF%'                                    then item_total_cost else 0 end), 2)
        FROM data_txt
       WHERE company = 'Entreprise FRANCE'
         AND (order_status = 'Confirmed' OR order_status = 'Delivered')
         AND ((course_number_1 LIKE 'EC%' AND course_number_2 NOT LIKE 'DIF%')
          OR (course_number_2 LIKE 'DIF%'))
    GROUP BY RIGHT(LEFT(`start_date`, 7), 2)

    Tatayo.

  4. #4
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Tu peux faire ceci
    Dans ce cas, autant enlever la redondance de filtre dans la clause WHERE, elle ne sert pas a grand-chose.

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 485
    Par défaut
    Citation Envoyé par Yanika_bzh Voir le message
    Dans ce cas, autant enlever la redondance de filtre dans la clause WHERE, elle ne sert pas a grand chose
    Pas forcément, rien ne dit qu'il n'existe pas des lignes dans la base ne correspondant pas aux critères, et l'énoncé n'indique pas si elles doivent être prises en compte ou pas.

    Tatayo.

  6. #6
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Effectivement si rien ne l'indique

  7. #7
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    En tout cas, merci beaucoup, je ne connaissais pas CASE en mysql. Et ça va grandement m'aider pour la suite

    Merci beaucoup à tout le monde ^^

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Si start_date est bien au format date, on peut utiliser les fonctions dédiées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DATE_FORMAT(start_date, %m)
    EXTRACT(month from start_date)

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

Discussions similaires

  1. Requête SQL avec une condition portant sur date
    Par kekule10 dans le forum PyQt
    Réponses: 3
    Dernier message: 03/08/2014, 02h56
  2. [11gR2] Requête SQL avec conditions
    Par JordanBit dans le forum SQL
    Réponses: 1
    Dernier message: 15/03/2013, 17h20
  3. Requêtes SQL avec conditions
    Par leukes dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/07/2008, 10h30
  4. Requête SQL avec condition
    Par charlix dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/03/2008, 12h38
  5. [MySQL] concaténer une requête sql avec condition
    Par maliak dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/02/2006, 13h01

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