Salut à tous , je voudrai savoir si c'est possible de faire des requêtes croisées en mysql, si oui comment ? et pour terminer comment cakephp peut il réaliser cela ?? merci

6 réponses


BoBobby
Réponse acceptée

J'ai pas touché à ça depuis un moment, mais j'irai surement chercher du côté de Group By et SUM

Tu entends quoi par des requêtes croisées ? Imbriquées ? Des jointures ?

Je veux dire une requete croisé comme celui que nous propose access : faire un tableau croisé dynamique avec MySQL par exmple j'ai une table comme sa dans ma base :
exemple1:

Table ventes
+--------+---------+---------+------+
  mois client montant
+--------+---------+---------+------+
janvier M.A.    2045
+--------+---------+---------+------+
janvier M.A. 123
+--------+---------+---------+------+
janvier B.H. 1034
+--------+---------+---------+------+
janvier N.S. 765
+--------+---------+---------+------+
janvier C.G. 34
+--------+---------+---------+------+
janvier E.B. 983
+--------+---------+---------+------+
fevrier M.A. 678
+--------+---------+---------+------+
fevrier B.H. 1254
+--------+---------+---------+------+
fevrier N.S. 98
+--------+---------+---------+------+
fevrier C.G. 459
+--------+---------+---------+------+
fevrier E.B. 2451
+--------+---------+---------+------+
février S.R. 34
+--------+---------+---------+------+
mars B.H. 763
+--------+---------+---------+------+
mars C.G. 896
+--------+---------+---------+------+
mars E.B. 1439
+--------+---------+---------+------+

et je veux avoir en sortie un tableau comme celui ci-dessous
exemple2:

+--------+---------+---------+------+
| client | janvier | fevrier | mars |
+--------+---------+---------+------+
| B.H | 1034 | 1254 | 763 |
| C.G | 34 | 459 | 896 |
| E.B | 983 | 2451 | 1439 |
| M.A | 2168 | 678 | 0 |
| N.S | 765 | 98 | 0 |
| S.R | 0 | 34 | 2417 |
+--------+---------+---------+------+

Hi,

D'après moi, plusieurs solutions:
1- Faire une requête avec des IF pour faire les calculs et groupe.
2- Select all, puis faire un algorithme qui fait le tri et les calculs.

Pour la première méthode, une recherche google t'aidera, j'ai trouvé une question équivalente avec une réponse utilisant les IF dans la requête.
@+

ok keisuke , j'essayerai comme tu la dit.