Submitted by psilonnix on
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.
Il faut simplement group by
Permalien Soumis par psilonnix le 10 Novembre, 2017 - 11:36
Il faut simplement group by tout les 'arrays'
$query->groupBy('x.camp')->groupBy('x.code')->groupBy('x.pf')->groupBy('y.des')->groupBy('y.code');
A plus ;)