Definir un resultat colonne par colonne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Definir un resultat colonne par colonne

par cf357 » 20 janv. 2009, 17:23

Non je te remercie c'est exactement la voix que j'avais suivie ;)
J'obtiens des performances suffisantes pour une grosse collection de données.

par zeus » 15 janv. 2009, 12:17

Je ne pense pas qu'il soit possible d'obtenir directement depuis une requête SQL le résultat que tu demandes.

Par contre, il est facile d'obtenir le résultat suivant :

Code : Tout sélectionner

+--------+------------+------------+ |user_id | date | sum(amout) | +--------+------------+------------+ | 42 | 2008-12-01 | 23 | | 42 | 2008-12-02 | 1 | | 42 | 2008-12-03 | 0 | | 49 | 2008-12-01 | 13 | | 49 | 2008-12-02 | 81 | | 49 | 2008-12-03 | 20 | +--------+------------+------------+
Et de se tableau, il est simple d'obtenir le total et de construire ce que tu demandes.

Et, effectivement, il faut passer par un GROUP BY.
Est-ce que tu as besoin de plus de précisions sur la requête à utiliser ?

par cf357 » 15 janv. 2009, 11:53

Hum ce n'est vraiment ce que je veux faire, et ça ne me semble pas vraiment optimale ;)
Pour le moment j'obtiens des performances "suffisantes" mais pas optimale avec une seule requete, et en construisant moi même mon tableau en mémoire avec une solution algorithmique.

par animithra » 14 janv. 2009, 21:53

Bonsoir,

Le but de ton traitement est d'obtenir une ligne contenant les différentes dates et les différents montant pour un user donné.

Il suffit de transcrire cette idée pour sql :

etape 1 : selection des différents users

etape 2 : pour un user donné (qui définit une condition while), selection des dates et montants (ordonnée par date croissante).

Au niveau du code tu aurais :

Code : Tout sélectionner

$req = selection des différents user de la table while($data = mysql_fetch_array($req)){ //pour chaque user trouvé, on cherche les dates et montants $req2 = selection des dates et montants où user = $data['user_id']; while($data2 = mysql_fetch_array($req2)){ //tableau avec autant de colonnes que de dates (= mysql_num_rows($req2)); } }
Je pense que tu pourrais éventuellement utiliser GROUP BY mais je ne connais pas assez cette option pour te l'assurer.

Je ne détaille pas volontairement les requêtes SQL pour que tu prennes le temps de faire quelques recherches, en cas de problème, reviens ici :)

Definir un resultat colonne par colonne

par cf357 » 14 janv. 2009, 11:37

[ => J'avoue avoir eu du mal à trouver un titre ! ]

1) Voici mon schema :

Code : Tout sélectionner

Table "history_revenue" : id : INTEGER user_id : INTEGER amount : DECIMAL date : DATE
Je voudrai, par exemple, obtenir le tableau des revenues générés par les joueurs, jour après jour.
Plus visuellement, un tableau de ce genre :

Code : Tout sélectionner

user_id | 2008-12-01 | 2008-12-02 | 2008-12-03 | total 42 23 1 0 26 49 13 81 20 114

Je ne vois absolument pas comment faire en SQL, et meme si je devais passer par un traitement en PHP, je ne sais pas quelle serait la solution la + optimisée...
Conseils bienvenus :oops:

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]