[PHP] requete pour garder les meilleurs prix

Résolu
theflagada Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
theflagada Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
voici en gros la structure de ma table:

prix;ville;fournisseur

0,2;toulouse,sfr
0,3;toulouse,bouygues
0,4;toulouse,orange
0,2;bordeaux,sfr
0,4;bordeaux,bouygues
0,2;bordeaux,orange
0,6;Paris,sfr
0,2;Paris,orange
0,3;Paris,bouygues
0,4;geneve,sfr
0,2;geneve,orange
0,6;geneve,bouygues

J essaye de faire une requete pour pouvoir recuperer seulement les lignes suivantes:

0,2;toulouse,sfr
0,2;bordeaux,sfr
0,2;bordeaux,orange
0,2;Paris,orange
0,2;geneve,orange

Autrement dit, pour chaque ville, la ligne ou le prix est le plus interessant... J ai beau tourner ça dans tous les sens, je sèche.... Si quelqu'un a une idée, elle sera la bienvenue.

merci d'avance
Flagada
A voir également:

10 réponses

styvodiabolo
 
Salut theflagada,

En suggestion:

--prémice de la connexion à ta base--

$sql="SELECT MIN(prix) AS prix_min FROM TA_TABLE";
$result=mysql_query($sql) or die("Requête Prix_Mini échouée");
$data=mysql_fetch_assoc($result);

$sql_prix="SELECT prix, ville, fournisseur FROM TA_TABLE WHERE prix = {$data['prix_min']}";
$result_prix=mysql_query($sql_prix); or die("Requête Prix_Avantageux échouée")
while($data_prix=mysql_fetch_assoc($result_prix)) {
echo $data_prix['prix'].';'.$data_prix['ville'].','.$data['fournisseur']."<br>";
}
0
theflagada Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   4
 
Salut styvodiabolo,

enfait j ai deja essayé cette requete mais il me sort seulement les lignes avec les prix les plus bas de la table et non les prix les plus bas pour chaque ville...
0
styvodiabolo
 
Alors il faudrait faire un regroupement :

SELECT MIN(prix) AS Prix_mini_ville, ville, fournisseur FROM TA_TABLE GROUP BY ville, fournisseur

L'idée est là mais pas forcément la synthaxe.
Regarde un soupcon pour la notion de regroupement dans le SQL.
Je reviens ce soir, dis moi quoi.
0
theflagada Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   4
 
Bien vu!! j avais pas pensé à ça... Ca marche nickel.
Merci beaucoup et à bientôt.
0
styvodiabolo
 
Pas de souci ;).
Bon courage.
0
theflagada
 
Hello,
Eh bien en fait, il s'avère que cette requête ne marche pas.... j ai réalisé que le problème était le suivant.
Si je groupe par ville, cela m affiche le bon nombre de resultats avec les destinations qui correspondent a chaque resultat... mais toujours le meme fournisseur; autrement dit, pour un prix donné, je n'ai pas le fournisseur correspondant !
Si je groupe par vile et fournisseur, il me donne toute les lignes de la table..
Je ne comprends vraiment pas comment parvenir a selectionner les bonnes lignes..

La requete qu'il me faudrait serait la suivante ( en langue francaise): Selectionner ville, fournisseur, prix dans matable où le prix est le moins cher pour chaque destination.

S'il vous plait, aidez moi, Cette petite requete bloque tout mon avancement ...
Merci d'avance
Flagada
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JoloKossovar Messages postés 111 Date d'inscription   Statut Membre Dernière intervention   33
 
salut ^^
hum je ne sais pas si tu peux avoir ton résultat directement. en revencha tu pourrai faire une ptite boucle de vérification du prix.
0
theflagada
 
Ok , Donc tu pense que ce n'est as faisable?
Decidément je suis assez déçu des capacités du php.... et de mysql...
Et sinon , tu as une idée pour la boucle ?
0
JoloKossovar Messages postés 111 Date d'inscription   Statut Membre Dernière intervention   33
 
Je dis peut etre une bétise, et d'ailleur as tu essayé de former une requete html avec la fonction min sur ton prix ?
0
JoloKossovar Messages postés 111 Date d'inscription   Statut Membre Dernière intervention   33
 
0
JoloKossovar Messages postés 111 Date d'inscription   Statut Membre Dernière intervention   33
 
Un truc du genre :

SELECT t1.ville,t1.fournisseur,t1.prix FROM MaTable t1 where t1.prix( Select min( t2.prix ) from Matable t2 where t2.destination=t1.destination )
0
theflagada Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonjour,
EN fait j ai fait une boucle pour verifier et je fais une deuxieme requete pour recuperer le nom du fournisseur. Ca marche tre bien ( bon j ai une requete de plus et sachant que j ai 40000 lignes ds ma table c un peu lourd mais bon...)
0