Une seule requête ? - SQL/NoSQL - Programmation
Marsh Posté le 28-03-2006 à 11:05:52
Essaye :
Code :
|
Sous Oracle ça marche
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 :$
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?
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
Marsh Posté le 28-03-2006 à 11:14:35
Mais c'est quoi ton vrai problème, là?
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 :$
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
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 ? :$
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.
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.
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!
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
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...
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 !
Marsh Posté le 28-03-2006 à 11:25:30
'tain mais t'as mis quoi dans ta boucle while? Rien?
Marsh Posté le 28-03-2006 à 11:25:49
lis la doc de mysql_fetch_array, quoi!
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
Marsh Posté le 28-03-2006 à 11:26:40
http://fr2.php.net/manual/fr/funct [...] -array.php
Marsh Posté le 28-03-2006 à 11:27:32
sans déconner, ya des exemples partout sur internet, en premier lieu sur la doc...
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...
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 ..
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?
Marsh Posté le 28-03-2006 à 11:46:23
c'est une blague?
Si c'est vrai, tu n'as donc vraiment aucune idée de ce que tu fais, alors?
Bon, essaie ça et regarde ce qui se passe...et essaie de comprendre...
$r1=mysql_query("SELECT idproduit,prix,p FROM marche WHERE vendeur='$pseudo' GROUP BY p" ) ;
while ($row1=mysql_fetch_array($r1)){
print_r($row1);
}
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 ?
Marsh Posté le 28-03-2006 à 12:05:38
ncdetoulouse a écrit : D'affichage, ça : |
il est passé où le COUNT ?
Sinon, ORDER BY c'est bien aussi
Marsh Posté le 28-03-2006 à 12:24:09
On en n'est plus là, on a avancé depuis
Regarde mon dernier message
Marsh Posté le 28-03-2006 à 12:59:25
Si tu veux toutes tes lignes tu vires le group by...
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 ?!..
Marsh Posté le 28-03-2006 à 13:04:17
order by au lieu de group by, alors.
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