Bonjour à tous,

J'ai une requête SQL avec laquelle je dois construire un CSV.

Je dois avoir comme résultat final une ligne par code GLN (Magasin) et dans chaque colonne le Chiffre d'affaire (CA) des différents secteurs (site_id) de vente du magasin ( Pharmacie, Culturel, Photo etc..)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
GLN | NOM | CAPharma | CACulturel | CaPhoto
100    Mag1   150140100
Voici la requête:

$requete="SELECT p.id as gln, p.nom as nomdusite , p.pannonceau as pannonceau, p.raisonSociale as nommagasin, p.centrale as sca, t2.site_id, t2.CA_TOTAL FROM pointretraits p LEFT JOIN (SELECT t1.pointretrait_id, t1.site_id, SUM(t1.totalttc) as CA_TOTAL FROM (SELECT * FROM coliss GROUP BY nrcommande, site_id) t1 GROUP BY t1.pointretrait_id, t1.site_id ORDER BY site_id) t2 ON p.id=t2.pointretrait_id WHERE id=3025680015000 ORDER BY id, site_id ";

Je dois retraiter cette requête car je GROUP BY sur le site_id pour obtenir les montants mais j'obtiens donc plusieurs lignes, une par site_id

Pour l'exemple, dans la requête je teste avec un seul GLN (Magasin) => WHERE id=3025680015000


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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
$getLignesColis = @mysql_query($requete);
    $int = 2;
while ($ligne = @mysql_fetch_array($getLignesColis)) {
 
 
        $sheet->setCellValue("A" . $int, $ligne['gln']); 
        $sheet->setCellValue("B" . $int, $ligne['nomdusite']);
        $sheet->setCellValue("C" . $int, $ligne['pannonceau']);
        $sheet->setCellValue("D" . $int, $ligne['nommagasin']);
        $sheet->setCellValue("E" . $int, $ligne['sca']);
 
                switch ($ligne['site_id']) {
                    case '1':
                        $sheet->setCellValue("G" . $int, $ligne['CA_TOTAL']);
                        break;
                    case '2':
                        $sheet->setCellValue("J" . $int, $ligne['CA_TOTAL']);
                        break;
                    case '3':
                        $sheet->setCellValue("F" . $int, $ligne['CA_TOTAL']);
                        break;
                    case '4':
                        $sheet->setCellValue("H" . $int, $ligne['CA_TOTAL']);
                        break;
                    case '931786493':
                        $sheet->setCellValue("L" . $int, $ligne['CA_TOTAL']);
                        break;
                    case '995863':
                        $sheet->setCellValue("K" . $int, $ligne['CA_TOTAL']);
                        break;
 
                    case '18261839':
                        $sheet->setCellValue("M" . $int, $ligne['CA_TOTAL']);
                        break;
                    case '4579832':
                        $sheet->setCellValue("I" . $int, $ligne['CA_TOTAL']);
                        break;
 
                }
 
        $int++;
    }
Dans ma boucle je viens checker la variable site_id qui correspond au secteur de vente (Pharmacie, Culturel) et je place le montant du CA dans la colonne correspondante.

Le soucis c'est qu'en faisant ainsi je me retrouve avec une ligne par site_id avec a ce format:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
GLN | NOM | CAPharma | CACulturel | CaPhoto
100    Mag1   150100    Mag1               140100    Mag1                                 100
Ce que j'aimerai obtenir c'est une seule ligne sur ce format:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
GLN | NOM | CAPharma | CACulturel | CaPhoto
100    Mag1   150140100
J'aimerai pouvoir merger les lignes dans le script si le GLN est identique pour obtenir une ligne unique comme ci-dessus.

Merci d'avance pour votre aide