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

Symfony PHP Discussion :

Faire une requête pivot avec doctrine + mariaDB ?


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 126
    Par défaut Faire une requête pivot avec doctrine + mariaDB ?
    Bonjour à tous,

    Savez-vous si l'on peut faire une requête pivot du genre mois/année avec doctrine ?

    Faut il utiliser du sql natif ? si oui, auriez vous un exemple compatible avec mariaDB ?

    Ou bien faire ça avec des requêtes union + table dans twig ?

    Merci d'avance pour vos aimables réponses

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 126
    Par défaut
    Alors, pour ceux que cela pourraît intéresser il est tout à fait possible de le faire grâce à des CASE / THEN / ELSE comme par exemple ceci, rendant complètement obsolète la commande PIVOT :

    Par contre, je suis passé à mysql direct car MariaDB par xampp produisait de plus en plus de corruption de tables, depuis je n'ai plus aucun problème et en plus je gère tout par le Mysql Workbench...

    Cependant il faut penser à rajouter une ligne d'options dans la config doctrine, à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    doctrine:
      dbal:
        url: "%env(resolve:DATABASE_URL)%"
        options:
          1002: 'SET sql_mode=(SELECT REPLACE(@@sql_mode, "ONLY_FULL_GROUP_BY", ""))'
    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
     public function getTableauAnnuel()
        {
            return $this->createQueryBuilder('d')
                ->select("DISTINCT date_format(d.date_acompte,'%Y') AS Annee,
    SUM(CASE WHEN MONTH(d.date_acompte)='1' THEN d.total_acompte ELSE 0 END) AS Janvier,
    SUM(CASE WHEN MONTH(d.date_acompte)='2' THEN d.total_acompte ELSE 0 END) AS Fevrier,
    SUM(CASE WHEN MONTH(d.date_acompte)='3' THEN d.total_acompte ELSE 0 END) AS Mars,
    SUM(CASE WHEN MONTH(d.date_acompte)='4' THEN d.total_acompte ELSE 0 END) AS Avril,
    SUM(CASE WHEN MONTH(d.date_acompte)='5' THEN d.total_acompte ELSE 0 END) AS Mai,
    SUM(CASE WHEN MONTH(d.date_acompte)='6' THEN d.total_acompte ELSE 0 END) AS Juin,
    SUM(CASE WHEN MONTH(d.date_acompte)='7' THEN d.total_acompte ELSE 0 END) AS Juillet,
    SUM(CASE WHEN MONTH(d.date_acompte)='8' THEN d.total_acompte ELSE 0 END) AS Aout,
    SUM(CASE WHEN MONTH(d.date_acompte)='9' THEN d.total_acompte ELSE 0 END) AS Septembre,
    SUM(CASE WHEN MONTH(d.date_acompte)='10' THEN d.total_acompte ELSE 0 END) AS Octobre,
    SUM(CASE WHEN MONTH(d.date_acompte)='11' THEN d.total_acompte ELSE 0 END) AS Novembre,
    SUM(CASE WHEN MONTH(d.date_acompte)='12' THEN d.total_acompte ELSE 0 END) AS Decembre,
    SUM(d.total_acompte) AS Total_annee")
                ->groupBy('Annee')
                ->orderBy('Annee', 'DESC')
                ->getQuery()->getScalarResult();
        }

  3. #3
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Je m'incruste dans ta problématique car je ne connaissais pas la "table pivot". Et c'est un tableau croisé dynamique en français. Ou en SQL, une table de cumuls (fonctions d'agrégations GROUP BY).
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/01/2020, 22h25
  2. Comment faire une requête optimisée avec limite
    Par beyo dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/11/2012, 21h25
  3. Faire une requête conditionnelle avec variable
    Par danje dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/10/2008, 15h07
  4. Faire une requête https avec une application Delphi 7
    Par davidkungfu dans le forum Web & réseau
    Réponses: 12
    Dernier message: 10/04/2008, 10h39
  5. [Hibernate] Faire une requête avec relation NN
    Par n@n¤u dans le forum Hibernate
    Réponses: 20
    Dernier message: 25/07/2006, 10h39

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