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

PHP & Base de données Discussion :

Requête d'agrégats et PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut Requête d'agrégats et PHP
    Salam ; en phase de développement de la couche statistique , j'ai la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT MONTH(datedec)AS Mois , YEAR(datedec) AS Année,sum(m)as m,sum(f)as f,sum(m1)as m,sum(f1)as f,sum(m2)as m,sum(f2)as f,sum(m3)as m,sum(f3)as f,sum(m4)as m,sum(f4)as f,sum(m5)as m,sum(f5)as f,
    sum(m6)as m,sum(f6)as f,sum(m7)as m,sum(f7)as f,sum(m8)as m,sum(f8)as f
    FROM `conteneur` 
    GROUP BY Année,Mois
    requête simulée sur phpmyadmin sa marche très bien.
    m...m8 et f...f8 c'est des paramètres de suivit.
    mes problèmes :
    Est ce que ont doit traité les requêtes d'agrégats avec du PHP , du sql ou les deux ensembles ?
    Comment faire pour sortir la somme des M et des F séparément ?
    Comment faire pour extraire le nom du mois en français?
    merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    déjà je pense qu y'a un soucis dans ta table c'est quoi les f*... m*
    pour ne pas avoir fait de table lié ?

    pour la traduction des mois c'est avec Intl

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re ; Non c'est des paramètres de suivit chacun correspond a une close , je pouvais explosé la table mais je suis resté sur se schéma afin de garder une même ligne et éviter de faire une requête croisé dynamique.....
    pour la traduction des mois c'est avec Intl

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par redoran Voir le message
    Re ; Non c'est des paramètres de suivit chacun correspond a une close , je pouvais explosé la table mais je suis resté sur se schéma afin de garder une même ligne et éviter de faire une requête croisé dynamique.....
    On est aps dans Excel la, faire des jointure c'ets le but d'une base de donnée, c'est normale que tu galères si tu détournes l'utilisation


    pour le reste http://php.net/manual/fr/class.intldateformatter.php

  5. #5
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re , stealth36 t'a un problème avec les touches
    On est aps dans Excel la
    des jointure c'ets le but
    j'ai souvent le même problème
    cette table est conçu sur la base d'un support d'évaluation d'agrégat de paramètres de suivit en plus cette structure ne pose pas de problème sur le plan modélisation et création de rapport de synthèse.
    c'est normale que tu galères si tu détournes l'utilisation
    en delphi avec access j'ai utilisé le même style de requête ou je fais des sum(a1)......sum(a5) , sum(sum(a).,....,sum(a5))... si je me rappel bien!!! mais j'arrive pas a tombé sur le fichier

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    J'aurais tendance à plussoyer stealth : c'est bizarre comme structure...
    Si chaque colonne correspond à une clause, qu'est-ce qu'il se passe quand tu as besoin d'en rajouter une ? Tu rajoutes une colonne ?

    Cela dit, si tu tiens à conserver ce format-là, pour avoir des sommes de sommes, le plus simple c'est de les additionner :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT sum(m) as sm, sum(m1) as sm1, (sum(m) + sum(m1)) as smTotal
    FROM `conteneur`
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re ; Celira :
    c'est des colonnes fixe et j'ai bien confirmer dans le cas ou il y'avait une tendance a évolué j’aurai choisie d'explosé la table ( je fais rien sans modélisation).
    Comment faire pour sortir la somme des M et des F séparément ? question résolu.
    Comment faire pour extraire le nom du mois en français? j'ai vue sur google et j'ai trouver cette fonction SET lc_time_names = 'fr_FR' comment l’intégré dans la requête ci-dessus !!!

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    faire un strftime, mais le mieux est d'utilisé Intl mais t'as pas regardé le lien ...

  9. #9
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Oui , mais j'essaye de le faire dans la requête

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par redoran Voir le message
    Oui , mais j'essaye de le faire dans la requête
    tu peux pas en mysql (enfin si mais faut bien configurer les locales pour ton serveur), le mieux étant de faire ça coté PHP

  11. #11
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Je ne suis pas sûr que MySQL implémente les mois dans toutes les langues.

    Une solution : tu crées une table des mois (mois_num, mois_libelle) et tu fais une jointure dessus.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT m.mois_libelle AS Mois -- ...
    FROM conteneur c -- apostrophes inversées inutiles !
    INNER JOIN mois m ON m.mois_num = MONTH(c.datedec)
    GROUP BY Annee, Mois
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  12. #12
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Merci Stealth36 la solution est comme suite :
    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
     
    <?php
    $cbd->exec("SET lc_time_names = 'fr_FR'"); // ligne ajouter pour afficher les noms des mois en français 
     
    $tbord=$cbd->prepare('	SELECT MONTHNAME(datedec)AS Mois , YEAR(datedec) AS Année,sum(m)as m,sum(f)as f,sum(m1)as m1,sum(f1)as f1,	sum(m2)as m2,sum(f2)as f2,sum(m3)as m3,sum(f3)as f3,sum(m4)as m4,sum(f4)as f4,sum(m5)as m5,sum(f5)as f5,sum(m6)as m6,sum(f6)as f6,sum(m7)as m7,sum(f7)as f7,sum(m8)as m8,sum(f8)as f8,
    (sum(m)+sum(m1)+sum(m2)+sum(m3)+sum(m4)+sum(m5)+sum(m6)+sum(m7)+sum(m8)) As Total_M ,
    (sum(f)+sum(f1)+sum(f2)+sum(f3)+sum(f4)+sum(f5)+sum(f6)+sum(f7)+sum(f8)) As Total_F 
    FROM `conteneur` 
    GROUP BY Année,Mois');
     
     
     /* $afflist->bindParam(':an',  PDO::PARAM_INT); */
     
    try {
    // On envois la requète
    $tbord->execute();
    // On récupère en 1er toutes les données
    $datalist = $tbord->fetchAll(PDO::FETCH_ASSOC);
    // libèré la connexion du serveur
    $tbord->closeCursor();	
     
    //print_r ($datacom); //verrification du résultat
    }
    catch( Exception $e ){
    echo 'Erreur d\'affichage : ', $e->getMessage();
    }
    ?>
    le code marche très bien pour l'instant , est ce que c'est la bonne méthode ?

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    le mieux c'est de formater la date au moment de l'affichage, mais si ça te convient comme ça t’embêtes pas

  14. #14
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re ;
    Comment faire pour extraire le nom du mois en français?
    résolu avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cbd->exec("SET lc_time_names = 'fr_FR'"); // ligne ajouter pour afficher les noms des mois en français


    Est ce que ont doit traité les requêtes d'agrégats avec du PHP , du sql ou les deux ensembles ?
    là c'est le domaine des professionnels , sachant que le langage sql est puissant alors faut-il alterné entre sql et php ou utilisé d'autres méthodes tel que les vues....!
    je crois qu'il faut un nouveau post par rapport a la problématique .
    Merci a tous

  15. #15
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par redoran Voir le message
    Est ce que ont doit traité les requêtes d'agrégats avec du PHP , du sql ou les deux ensembles ?
    là c'est le domaine des professionnels , sachant que le langage sql est puissant alors faut-il alterné entre sql et php ou utilisé d'autres méthodes tel que les vues....!
    Les agrégats, c'est du calcul en masse sur les données et l'outil le plus performant pour ça est un bon SGBD.

    Au SGBD le calcul sur les données et à l'application l'affichage du résultat !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Requête de sélection en php
    Par zprr21 dans le forum Langage SQL
    Réponses: 18
    Dernier message: 07/02/2007, 15h27
  2. [SQL] Différence d'exécution d'une requête entre phpmyadmin et php
    Par lodan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/08/2006, 15h56
  3. Réponses: 3
    Dernier message: 16/08/2006, 16h05
  4. appel requête access stockée en php
    Par nek_kro_kvlt dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 05/07/2006, 15h05
  5. [Excel] Exportation d'une requête vers Excel via PHP
    Par Foudébois dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 17/05/2006, 16h46

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