SQL Drupal Group by

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Voilà j'ai un petit soucis pour réaliser un "group by" sous drupal. En effet, je souhaite réaliser la requête suivante (fonctionnel sous phpmyadmin)

SELECT x.camp AS camp, x.code AS espece, y.des AS designation, x.pf AS pf, ROUND( SUM( x.pn - x.qte ) , 3 ) AS qte
FROM apport.apport x, apport.cereale y, apport.operation z
WHERE x.code = y.code
AND x.ope = z.code
GROUP BY x.camp, x.code
ORDER BY x.camp, x.code

J'ai donc essayé de la transcrire sous drupal ce qui me donne :

       
        $query = $db->select('apport.apport','x');
        $query->join('apport.cereale','y', 'x.code = y.code');
        $query->join('apport.operation','z', 'x.ope = z.code');
        $query->fields('x', array('camp', 'code' ,'pf'));
        $query->fields('y', array('des', 'code'));

        $query->addExpression('ROUND(SUM(x.pn-x.qte),3)','qte');
        $query->groupBy('x.camp')->groupBy('x.code');
        $query->orderBy('x.camp','ASC')->orderBy('x.code','ASC');

        $result = $query->execute();

        $tableau = array();
        foreach ($result as $record) {
            $row['camp'] = $record->camp;
            $row['code'] = $record->code;
            $row['des'] = $record->des;
            $row['pf'] = $record->pf;
            $row['qte'] = $record->qte;

            $tableau[] = $row;

            print_r($tableau);

        }

L'erreur vient de ces deux lignes car lorsque je les commentes j'obtiens bien un résultat

        $query->addExpression('ROUND(SUM(x.pn-x.qte),3)','qte');
        $query->groupBy('x.camp')->groupBy('x.code');

Quelqu'un aurait-il une solution a me proposer ?
Cordialement.

Forum : 
Version de Drupal :