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

Requêtes MySQL Discussion :

Extraction sur plusieurs mois


Sujet :

Requêtes MySQL

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut Extraction sur plusieurs mois
    Bonjour,

    Je veux extraire uniquement les commandes dont les dates de livraison s'échelonnent sur plusieurs mois.

    J'ai une table des dates de livraisons des commandes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id_commande_livraison
    id_commande
    date_livraison
    J'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT id_commande, COUNT(*)
    FROM (
    SELECT YEAR(date_livraison), MONTH(date_livraison), COUNT(*)  
    FROM commandes_livraisons 
    GROUP BY id_commande, YEAR(date_livraison), MONTH(date_livraison))
    AS commandes_livraisons
    GROUP BY id_commande
    HAVING COUNT(*)>1
    Ce qui me semble un peu lourd.

    Existe-t-il une autre solution plus performante ?

    Merci d'avance
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par lodan Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT id_commande, COUNT(*)
    FROM (
    SELECT YEAR(date_livraison), MONTH(date_livraison), COUNT(*)  
    FROM commandes_livraisons 
    GROUP BY id_commande, YEAR(date_livraison), MONTH(date_livraison))
    AS commandes_livraisons
    GROUP BY id_commande
    HAVING COUNT(*)>1
    Saluton,
    De toutes façons ton premier GROUP BY ne peut pas fonctionner (peut-être en MyQSL, mais pas en SQL standard) car id_commande ne fait pas partie de la projection.
    Da'illeurs je ne sais pas où le premier SELECT irait chercher id_commande qui n'est pas dans la projection de la sous-requête.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Plutôt comme ça, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_commande, COUNT(DISTINCT DATE_FORMAT(date_livraison, '%Y%m')) AS livraisons
    FROM commandes_livraisons 
    GROUP BY id_commande
    HAVING livraisons > 1
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  4. #4
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci,

    Après tests et comparatifs,

    Pas mieux.

    Cette syntaxe m'évite une requête imbriquée dans ma requête finale.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

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

Discussions similaires

  1. [AC-2010] requête répartition nb jours arrêt de travail sur plusieurs mois
    Par kikidrome dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/08/2012, 09h47
  2. Répartir une valeur en jours sur plusieurs mois
    Par zak_mckraken dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 23/03/2010, 15h14
  3. Résultat requete sur plusieur mois
    Par guigui69 dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/06/2009, 16h38
  4. Sélectionner des dates courant sur plusieurs mois
    Par Christophe Charron dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/01/2009, 14h03
  5. access sur plusieurs mois
    Par reuel dans le forum Modélisation
    Réponses: 8
    Dernier message: 28/07/2007, 22h09

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