Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2748 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Une seule requête ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une seule requête ?

n°1333356
ncdetoulou​se
Posté le 28-03-2006 à 10:43:53  profilanswer
 

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 ;)

mood
Publicité
Posté le 28-03-2006 à 10:43:53  profilanswer
 

n°1333383
orafrance
Posté le 28-03-2006 à 11:05:52  profilanswer
 

Essaye :

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


 
Sous Oracle ça marche  :ange:

n°1333391
ncdetoulou​se
Posté le 28-03-2006 à 11:10:12  profilanswer
 

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 :$

n°1333395
skeye
Posté le 28-03-2006 à 11:13:00  profilanswer
 

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 -
n°1333396
ncdetoulou​se
Posté le 28-03-2006 à 11:13:51  profilanswer
 

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

n°1333399
skeye
Posté le 28-03-2006 à 11:14:35  profilanswer
 

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


---------------
Can't buy what I want because it's free -
n°1333400
ncdetoulou​se
Posté le 28-03-2006 à 11:15:05  profilanswer
 

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 :$

n°1333403
hoppus666d​tc
Gigateuf Wayne ! Megateuf Gart
Posté le 28-03-2006 à 11:16:34  profilanswer
 

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

n°1333404
ncdetoulou​se
Posté le 28-03-2006 à 11:17:09  profilanswer
 

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

n°1333405
skeye
Posté le 28-03-2006 à 11:17:53  profilanswer
 

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 -
mood
Publicité
Posté le 28-03-2006 à 11:17:53  profilanswer
 

n°1333406
thithanne
Posté le 28-03-2006 à 11:17:58  profilanswer
 

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.
 

n°1333409
skeye
Posté le 28-03-2006 à 11:18:54  profilanswer
 

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 -
n°1333412
ncdetoulou​se
Posté le 28-03-2006 à 11:20:03  profilanswer
 

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

n°1333418
skeye
Posté le 28-03-2006 à 11:22:22  profilanswer
 

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 -
n°1333422
ncdetoulou​se
Posté le 28-03-2006 à 11:24:02  profilanswer
 

$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 !

n°1333423
skeye
Posté le 28-03-2006 à 11:25:30  profilanswer
 

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


---------------
Can't buy what I want because it's free -
n°1333426
skeye
Posté le 28-03-2006 à 11:25:49  profilanswer
 

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


---------------
Can't buy what I want because it's free -
n°1333427
ncdetoulou​se
Posté le 28-03-2006 à 11:25:57  profilanswer
 

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

n°1333428
ncdetoulou​se
Posté le 28-03-2006 à 11:26:14  profilanswer
 

Bon tant pis .. merci quand meme ..

n°1333429
skeye
Posté le 28-03-2006 à 11:26:40  profilanswer
 

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


---------------
Can't buy what I want because it's free -
n°1333432
skeye
Posté le 28-03-2006 à 11:27:32  profilanswer
 

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 -
n°1333444
ncdetoulou​se
Posté le 28-03-2006 à 11:32:42  profilanswer
 

..:s merci :s

n°1333446
ncdetoulou​se
Posté le 28-03-2006 à 11:33:08  profilanswer
 

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

n°1333450
skeye
Posté le 28-03-2006 à 11:35:38  profilanswer
 

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 -
n°1333453
ncdetoulou​se
Posté le 28-03-2006 à 11:36:26  profilanswer
 

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

n°1333458
skeye
Posté le 28-03-2006 à 11:38:30  profilanswer
 

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 -
n°1333465
ncdetoulou​se
Posté le 28-03-2006 à 11:42:22  profilanswer
 

Honnetement, oui, jnarrive pas à l'adapter

n°1333467
skeye
Posté le 28-03-2006 à 11:46:23  profilanswer
 

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 -
n°1333479
ncdetoulou​se
Posté le 28-03-2006 à 12:01:09  profilanswer
 

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 ?

n°1333487
orafrance
Posté le 28-03-2006 à 12:05:38  profilanswer
 

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

n°1333511
ncdetoulou​se
Posté le 28-03-2006 à 12:24:09  profilanswer
 

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

n°1333542
skeye
Posté le 28-03-2006 à 12:59:25  profilanswer
 

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


---------------
Can't buy what I want because it's free -
n°1333550
ncdetoulou​se
Posté le 28-03-2006 à 13:03:50  profilanswer
 

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 ?!..

n°1333551
skeye
Posté le 28-03-2006 à 13:04:17  profilanswer
 

order by au lieu de group by, alors.


---------------
Can't buy what I want because it's free -
n°1333571
ncdetoulou​se
Posté le 28-03-2006 à 13:13:49  profilanswer
 

Je vais essayer tout ça, merci !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Une seule requête ?

 

Sujets relatifs
[Hibernate][Criteria] je n'arrive pas à faire une requête spécialDonnées dans un tableau suite à une requête
[Oracle 9i]Export résultat de requête SQL vers fichier XML?récuperer une seule valeur via une requete sql
[SQL] Requête pour obtenir les valeurs présentes dans 1 seule table[MySQL] Possible de faire en UNE seule requête?
Faire une seule requete avec 2Transformer une requete SQL à 1 seule colonne en un tableau.
[résolu] plusieurs édition dans une seule requetePeut on tester en une seule fois une variabl tableau dans une requete?
Plus de sujets relatifs à : Une seule requête ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)