tri des resultats d'une requete dans une requete

Eléphant du PHP | 115 Messages

28 févr. 2007, 18:50

Bonjour,

Voici les champs de ma table:
ID_user,
nom,
prenom,
pdv,
spot1,
spot2,
spot3,
spot4,
spot5,
spot6,
ratio.

Je cherche la requete qui permettrait de :

MODE "tournevis+clou" ON:

Faire la somme des champs "spot1,spot2...spot6" le tout multiplié par "ratio" des lignes dont les pdv sont identiques et le tout étant trié par resultat croissant.
:oops: quelqu'un a compris ?

Donc au final, il y aurait un tableau de type:
Prénom nom pdv resultat=(spot1+spot2+...+spot6)*ratio
Bob Dylan AUXERRE 2456.89
Roger Rabbit PARIS 2345.23
...

Pour infos, il y a dans la table environ 180 users et une douzaine de pdv.

Est-ce faisable ?

MODE "tournevis+clou" OFF
Quelques réalisations www.cdi-interactiv.com

Eléphant du PHP | 115 Messages

01 mars 2007, 11:12

pas d'idées ?

:roll:
Quelques réalisations www.cdi-interactiv.com

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

01 mars 2007, 11:39

Modifié en dernier par mere-teresa le 01 mars 2007, 15:59, modifié 1 fois.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 115 Messages

01 mars 2007, 12:04

Oui, j'utilise cette fonction. En fait voila ma demarche:

Dans une boucle, je fais cette requete:
$req1 = "SELECT * FROM citroen_user WHERE statut='$statut'";
$result1=mysql_query($req1) or die (mysql_error()); 
while($row=mysql_fetch_array($result1))
{

$req2 = "SELECT *, SUM(spot1) AS sum_spot1, SUM(spot2) AS sum_spot2, SUM(spot3) AS sum_spot3, SUM(spot4) AS sum_spot4, SUM(spot5) AS sum_spot5, SUM(spot6) AS sum_spot6 FROM matable WHERE pdv='$pdv' GROUP BY pdv";
Je calcul mon resultat:
$total=($row2['sum_spot1']+$row2['sum_spot2']+$row2['sum_spot3']+$row2['sum_spot4']+$row2['sum_spot5']+$row2['sum_spot6'])*$row['ratio'];
Ensuite j'insère les resultats dans une table temporaire.
$req4 = "INSERT INTO table_tempo (pos,nom,prenom,pdv,resultat) VALUES (\"$i\",\"$nom\",\"$prenom\", \"$pdv\",\"$total\")";
}
Et au final je trie cette table par ordre.

Puis je la supprime.

Mais est-il possible de passer cette étape de création de table temporaire utilisée uniquement pour le tri des resultats ?

Je ne sait pas comment faire et ça me pose souvent problème cette façon de procéder...
Modifié en dernier par toony.m le 01 mars 2007, 15:37, modifié 1 fois.
Quelques réalisations www.cdi-interactiv.com

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 mars 2007, 14:41

Modération :
toony.m, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

01 mars 2007, 16:00

Code : Tout sélectionner

SELECT *, SUM(spot1, spot2, spot3) AS somme..
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.