Une seule requête ?

Une seule requête ? - SQL/NoSQL - Programmation

Marsh Posté le 28-03-2006 à 10:43:53    

Pour l'instant j'ai:
$r1=mysql_query("SELECT count(idproduit) AS nb FROM marche WHERE p=1 AND vendeur='$pseudo'" );
$r2=mysql_query("SELECT count(idproduit) AS nb2 FROM marche WHERE p=2 AND vendeur='$pseudo'" );
$r3=mysql_query("SELECT count(idproduit) AS nb3 FROM marche WHERE p=3 AND vendeur='$pseudo'" );
$r4=mysql_query("SELECT count(idproduit) AS nb4 FROM marche WHERE p=4 AND vendeur='$pseudo'" );
$r5=mysql_query("SELECT count(idproduit) AS nb5 FROM marche WHERE p=5 AND vendeur='$pseudo'" );
...etc jusqu'à p=12.
 
Ca fait donc 12 requetes !!
Est-il possible de rassembler cela en une seule requete et d'obtenir ainsi les 12 nombres comptés en "mangeant" moins le serveur ?
 
Merci infiniment ;)

Reply

Marsh Posté le 28-03-2006 à 10:43:53   

Reply

Marsh Posté le 28-03-2006 à 11:05:52    

Essaye :

Code :
  1. SELECT count(idproduit) AS nb , p FROM marche
  2. WHERE vendeur='$pseudo'
  3. GROUP BY p


 
Sous Oracle ça marche  :ange:

Reply

Marsh Posté le 28-03-2006 à 11:10:12    

Heuu.. Alors admettons que je veuille :
 
$r1=mysql_query("SELECT idproduit,prix,p FROM marche WHERE vendeur='$pseudo' GROUP BY p" );
while ($row1=mysql_fetch_array($r1){ }
 
Comment je fais pour afficher dans le WHILE  
idproduit et prix lorsque p=1
idproduit et prix lorsque p=1
idproduit et prix lorsque p=2
idproduit et prix lorsque p=3
idproduit et prix lorsque p=4
idproduit et prix lorsque p=4
idproduit et prix lorsque p=4
idproduit et prix lorsque p=7
idproduit et prix lorsque p=9
idproduit et prix lorsque p=12
etc.. dans l'ordre ? Je sais je sais jdemande bcou :$

Reply

Marsh Posté le 28-03-2006 à 11:13:00    

Tu remplis un tableau et ensuite tu le traites comme tu veux? :??:
Tu réfléchis un petit peu au lieu de venir demander tout de suite? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:13:51    

J'ai bcou de mal sur cette question là, si tu pouvais me guider :(
Jsuis dsl

Reply

Marsh Posté le 28-03-2006 à 11:14:35    

Mais c'est quoi ton vrai problème, là? [:autobot]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:15:05    

D'affichage, ça :
 
 
Heuu.. Alors admettons que je veuille :  
 
$r1=mysql_query("SELECT idproduit,prix,p FROM marche WHERE vendeur='$pseudo' GROUP BY p";  
while ($row1=mysql_fetch_array($r1){ }  
 
Comment je fais pour afficher dans le WHILE  
idproduit et prix lorsque p=1  
idproduit et prix lorsque p=1  
idproduit et prix lorsque p=2  
idproduit et prix lorsque p=3  
idproduit et prix lorsque p=4  
idproduit et prix lorsque p=4  
idproduit et prix lorsque p=4  
idproduit et prix lorsque p=7  
idproduit et prix lorsque p=9  
idproduit et prix lorsque p=12  
etc.. dans l'ordre ? Je sais je sais jdemande bcou :$

Reply

Marsh Posté le 28-03-2006 à 11:16:34    

Ou tu fais
 
select....  
 
UNION
 
select...
 
UNION  
 
...
 
Ca fait une au final, une multi mais une ;)

Reply

Marsh Posté le 28-03-2006 à 11:17:09    

Ce que jdemande vraiment ce serait qu'on me montre cke ca donne au final, tro demandé ou possible ? :$

Reply

Marsh Posté le 28-03-2006 à 11:17:53    

Si ça te pose problème de traiter les données de ta requête directement dans ton while, contente toi dans le while de stocker les résultats de ta requête dans un tableau, et traite les ensuite. [:skeye]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:17:53   

Reply

Marsh Posté le 28-03-2006 à 11:17:58    

si tu faisais un truc du genre :  
SELECT count(idproduit)  
FROM marche
GROUP BY vendeur, p
HAVING vendeur = '$pseudo' AND p <=12
 
Par contre, il faudra que tu parcours ton recordset pour récupérer le résultat de chaque ligne.
 

Reply

Marsh Posté le 28-03-2006 à 11:18:54    

ncdetoulouse a écrit :

Ce que jdemande vraiment ce serait qu'on me montre cke ca donne au final, tro demandé ou possible ? :$


Mais teste et regarde, au lieu de demander du tout cuit, bordel!:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:20:03    

J'aimerais bien tester !!
 
Mais ça: Si ça te pose problème de traiter les données de ta requête directement dans ton while, contente toi dans le while de stocker les résultats de ta requête dans un tableau, et traite les ensuite.  
 
--> Je ne sais pas encore faire, et j'ai pourtant besoin du résultat :(
 
Merci quand même

Reply

Marsh Posté le 28-03-2006 à 11:22:22    

ncdetoulouse a écrit :

J'aimerais bien tester !!


qu'est-ce que t'attends, alors?
 
fais ta boucle while et affiche ce que tu récupères à chaque tour, pour commencer, tu comprendras p-e ce que tu peux en faire derrière...:o


Message édité par skeye le 28-03-2006 à 11:22:36

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:24:02    

$r1=mysql_query("SELECT idproduit,prix,p FROM marche WHERE vendeur='$pseudo' GROUP BY p";  
while ($row1=mysql_fetch_array($r1){ }  
   
Comment je fais pour afficher dans le WHILE    
idproduit et prix lorsque p=1  
idproduit et prix lorsque p=1  
idproduit et prix lorsque p=2  
idproduit et prix lorsque p=3  
idproduit et prix lorsque p=4  
idproduit et prix lorsque p=4  
idproduit et prix lorsque p=4  
idproduit et prix lorsque p=7  
idproduit et prix lorsque p=9  
idproduit et prix lorsque p=12  
etc.. dans l'ordre ?  
 
Je suis bloqué là, c'est tout ! Je n'arrive pas à afficher idproduit et prix lorsque p=1  ..etc
Désolé de mon faible niveau !

Reply

Marsh Posté le 28-03-2006 à 11:25:30    

'tain mais t'as mis quoi dans ta boucle while? Rien? [:autobot]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:25:49    

lis la doc de mysql_fetch_array, quoi! [:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:25:57    

Je sais, parce que je ne sais pas quoi mettre !!!
Je ne sais pas faire !! grr

Reply

Marsh Posté le 28-03-2006 à 11:26:14    

Bon tant pis .. merci quand meme ..

Reply

Marsh Posté le 28-03-2006 à 11:26:40    

http://fr2.php.net/manual/fr/funct [...] -array.php


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:27:32    

sans déconner, ya des exemples partout sur internet, en premier lieu sur la doc...[:kiki]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:32:42    

..:s merci :s

Reply

Marsh Posté le 28-03-2006 à 11:33:08    

J'abandonne donc ce que jvoulais faire, bonne journée

Reply

Marsh Posté le 28-03-2006 à 11:35:38    

Pourquoi est-ce que tu abandonnes? Chercher un peu tout seul te fait si peur que ça?
Tu as tout ce qu'il te faut dans le lien que je t'ai mis...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:36:26    

Jne viens poser des questions ici que lorsque j'ai déjà cherché et que je bloque vraiment !
C'est dommage ..

Reply

Marsh Posté le 28-03-2006 à 11:38:30    

Je te fais un copier/coller de la doc que je t'ai donnée :
 
 
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
   printf("ID : %s  Nom : %s", $row[0], $row[1]);
}
 
ça te parait si compliqué que ça de tenter d'adapter ça à ton code et de voir ce que ça affiche, nom d'une pipe? [:pingouino]


Message édité par skeye le 28-03-2006 à 11:38:58

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 11:42:22    

Honnetement, oui, jnarrive pas à l'adapter

Reply

Marsh Posté le 28-03-2006 à 11:46:23    

c'est une blague? [:pingouino]
 
Si c'est vrai, tu n'as donc vraiment aucune idée de ce que tu fais, alors?[:roane]
 
Bon, essaie ça et regarde ce qui se passe...et essaie de comprendre...[:pingouino]
 
$r1=mysql_query("SELECT idproduit,prix,p FROM marche WHERE vendeur='$pseudo' GROUP BY p" ) ;  
while ($row1=mysql_fetch_array($r1)){
print_r($row1);
 }


Message édité par skeye le 28-03-2006 à 11:47:05

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 12:01:09    

J'ai essayé ça:
$r1=mysql_query("SELECT argent,points,agechien FROM dogs WHERE agechien<20 GROUP BY agechien" );    
while ($row1=mysql_fetch_array($r1)){  
print_r($row1);
 }
 
Ca me donne ça:
Array ( [0] => 105.00 [argent] => 105.00 [1] => 40.00 [points] => 40.00 [2] => 1 [agechien] => 1 ) Array ( [0] => 131.00 [argent] => 131.00 [1] => 78.00 [points] => 78.00 [2] => 2 [agechien] => 2 ) Array ( [0] => 164.75 [argent] => 164.75 [1] => 152.00 [points] => 152.00 [2] => 3 [agechien] => 3 ) Array ( [0] => 98.00 [argent] => 98.00 [1] => 22.00 [points] => 22.00 [2] => 4 [agechien] => 4 ) Array ( [0] => 27.91 [argent] => 27.91 [1] => 98.00 [points] => 98.00 [2] => 5 [agechien] => 5 ) Array ( [0] => 30.52 [argent] => 30.52 [1] => 69.00 [points] => 69.00 [2] => 6 [agechien] => 6 ) Array ( [0] => 24.48 [argent] => 24.48 [1] => 60.00 [points] => 60.00 [2] => 7 [agechien] => 7 ) Array ( [0] => 41.19 [argent] => 41.19 [1] => 134.00 [points] => 134.00 [2] => 8 [agechien] => 8 ) Array ( [0] => 44.80 [argent] => 44.80 [1] => 194.00 [points] => 194.00 [2] => 9 [agechien] => 9 ) Array ( [0] => 57.32 [argent] => 57.32 [1] => 50.00 [points] => 50.00 [2] => 10 [agechien] => 10 )  
 
Je comprends déjà un peu mieux comment ça fonctionne, merci !
 
Maintenant, une questions par rapport à ça:
 
Le problème est que ça m'affiche 19 enregistrements, tous ceux dont m'âgechien est inférieur à 20 : MAIS un seul avec agechien=1, un seul avec agechien=2..etc
OR, agechien=1 correspond à plus de 500 comptes.
Comment faire pour tous les prendre en compte dans l'affichage ?

Reply

Marsh Posté le 28-03-2006 à 12:05:38    

ncdetoulouse a écrit :

D'affichage, ça :
 
 
Heuu.. Alors admettons que je veuille :  
 
$r1=mysql_query("SELECT idproduit,prix,p FROM marche WHERE vendeur='$pseudo' GROUP BY p";  
while ($row1=mysql_fetch_array($r1){ }  
 
Comment je fais pour afficher dans le WHILE  
idproduit et prix lorsque p=1  
idproduit et prix lorsque p=1  
idproduit et prix lorsque p=2  
idproduit et prix lorsque p=3  
idproduit et prix lorsque p=4  
idproduit et prix lorsque p=4  
idproduit et prix lorsque p=4  
idproduit et prix lorsque p=7  
idproduit et prix lorsque p=9  
idproduit et prix lorsque p=12  
etc.. dans l'ordre ? Je sais je sais jdemande bcou :$


 
il est passé où le COUNT ?  :pt1cable:  
 
Sinon, ORDER BY c'est bien aussi :D

Reply

Marsh Posté le 28-03-2006 à 12:24:09    

On en n'est plus là, on a avancé depuis ;)
Regarde mon dernier message

Reply

Marsh Posté le 28-03-2006 à 12:59:25    

Si tu veux toutes tes lignes tu vires le group by...;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 13:03:50    

Voui sauf que jveux afficher dans le while d'abord tous ceux qui sont associés à p=1, puis tous ceux associés à p=2..etc ?!..

Reply

Marsh Posté le 28-03-2006 à 13:04:17    

order by au lieu de group by, alors.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 28-03-2006 à 13:13:49    

Je vais essayer tout ça, merci !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed