Requête spécifique
Bonjour,
Je n'arrive pas à écrire une requête pour afficher des données d'une facon particulière à savoir:
Nom d'un Produit spécifique
- description 1 du produit
- description 2 du produit
- description 3 etc..
Nom du produit Suivant
- description 1 du produit
- description 2 du produit
- description 3 etc..
J'ai pensé à imbriquer deux boucle while mais sans succès!
Merci de m'aider
Une requete avec une jointure et un traitement PHP devrait suffire.
Pas besoin de faire deux while (le pire étant une requete SQL dans un while).
Mais pour t'aider, il faudrait nous montrer ton code, pour voir la ou tu en es.
En fait j'utilise deux tables
$req = mysql_query("SELECT DISTINCT tab1.NometPrenom FROM listing tab1 JOIN competitions tab2 ON (tab1.id = tab2.id_compet)
WHERE tab1.CatAge='Junior 1' OR tab1.CatAge='Junior 2' OR tab1.CatAge='Junior 3' OR tab1.CatAge='Senior' ORDER BY sum(tab2.points_compet) DESC");
En fait j'aimerais
1)récupérer le total de points par sportif en fonction des cat age et classer les six premiers seulement
2)lister les résultats(tab2) de tous les sportifs (tab1)de la base triés par noms .. en evitant les doublons sur les noms
Par exemple:
1)untel1............100Pts
untel2............50 pts
untel3............10Pts
2)untel1
1er au championnat xxxx
3ème au championnatyyyy
untel2
1er au championnat xxxx
3ème au championnatyyyy
etc...
J'ai trouvé cette solution pour l'affichage des points par Sportif..
Peut-elle être optimisée?
------------------
$req = mysql_query("SELECT DISTINCT(tab1.NometPrenom),SUM( tab2.points_compet) FROM listing tab1 JOIN competitions tab2 ON (tab1.id = tab2.id_compet)
WHERE tab1.CatAge='Junior 1' OR tab1.CatAge='Junior 2' OR tab1.CatAge='Junior 3' OR tab1.CatAge='Senior' ORDER BY SUM(tab2.points_compet) DESC");
Cependant je ne vois pas la requête pour lister les résultats par sportif.
$req = mysql_query("SELECT DISTINCT(tab1.NometPrenom),SUM( tab2.points_compet) FROM listing tab1 JOIN competitions tab2 ON (tab1.id = tab2.id_compet)
WHERE tab2.id_compet>0 ORDER BY SUM(tab2.points_compet) DESC");
Pour afficher j'utilise:
echo $donnees['NometPrenom'].'( '.$donnees['CatAge'].' )<br />'.$donnees['resultats_compet'].'</font> - <font size="2" color="navy">le '.$donnees['date_compet'].';
Bonjour,
je n'ai toujours pas trouvé comment afficher mes données.
Si quelqu'un m'aider..
merci
Donne nous tes structures de tables et quelques éléments de ces tables, et on te montre comment faire.
Nom de table1
listing
id,NometPrenom,DatedeN,CatAge
Nom de table 2
competitions
id,id_compet,nature_compet,date_compet,lieu_compet ...Points_compet etc..
fred x - 09/09/76
1er au championnat ...
2ème au ....
Hector Y
3ème à la coupe de
5ème au tournoi de ...
Mickael Z
8ème au meeting de
ETC...
Aurais tu pas des vraies données ?
Car la, tu parles de position, mais je ne vois rien qui parle de position dans ta structure de table.
Juste un dump MysQL de quelques lignes me suffirait (avec en plus la structure), en gros un truc que je puisse coller dans mon MySQL pour tester.
Nom de table1
listing
id,NometPrenom, DatedeN, CatAge
1
2
..
12 Pierre xxx 09/10/98 poussin
17 Fred yyy 10/12/90 Minime
Nom de table 2
competitions
id ,id_compet, nature_compet,
1 12 ChampionnatFrance
2 17 Coupe de Paris
..
date_compet,lieu_compet
12/12/09 Bordeaux
18/5/09 Paris
.. ..
Class_compet Points_compet etc..
1er 100
5ème 30
J'ai mis les champs que j'utilisais pour la jointure.
J'arrive à le faire avec deux WHILE mais tu as dit que cela était déconseillé.
Merci pour ta réponse
Mais sinon, c'est possible d'obtenir un vrai dump ?
En fait, je suis pret à t'aider, mais je ne veux pas perdre 30 mn à créer une base de données de test.
Fais un export avec ton phpmyadmin.
Sinon, pour ton 1), ta requete est bonne.
Mais a priori, pour le 2), il te suffit de tout selectionner et de tout traiter en PHP pour afficher tous les compétiteurs (et leur résultat à toutes les compétitions).
Après tout dépend du volume de données à traiter.
Il se peut que ce schéma de conception ne soit pas optimisé.