Mysql afficher les résultats de 2 tables
Résolu
tacki
Messages postés
21
Statut
Membre
-
tacki Messages postés 21 Statut Membre -
tacki Messages postés 21 Statut Membre -
Bonjour,
J'ai sur mon site 2 tables:
La première:
entrainements avec (date_entrainement, id_membre, duree_exacte, distance_realisee, sensations, commentaire, contenu)
La seconde:
resultat avec (place, lieu, date_entrainement, duree_exacte, distance_realisee , commentaire)
Ce que je souhaiterai c'est afficher les résultats et les entrainements d'un membre en fonction de date_entrainement
J'ai vu plusieurs forum parlant de join, union ou autre mais n'étais pas adaptés à mon cas, et que je ne connais pas ces fonction malgré etre allé sur la doc officielle qui ne donne pas trop d'exemple.
Merci d'avance à ceux qui auront le courage de m'aider !
J'ai sur mon site 2 tables:
La première:
entrainements avec (date_entrainement, id_membre, duree_exacte, distance_realisee, sensations, commentaire, contenu)
La seconde:
resultat avec (place, lieu, date_entrainement, duree_exacte, distance_realisee , commentaire)
Ce que je souhaiterai c'est afficher les résultats et les entrainements d'un membre en fonction de date_entrainement
J'ai vu plusieurs forum parlant de join, union ou autre mais n'étais pas adaptés à mon cas, et que je ne connais pas ces fonction malgré etre allé sur la doc officielle qui ne donne pas trop d'exemple.
Merci d'avance à ceux qui auront le courage de m'aider !
Configuration: Windows Vista Firefox 3.0.3
11 réponses
-
Bonjour,
Quels sont les clé primaires de tes 2 tables, car elles ne sont pas évidentes. Une date en clé primaire paraît incohérent (Il peut y a voir 2 entrainements à la même date...). Pareil pour le lieu de résultat...
Pourrais-tu préciser quel serait le résultat de ta requête ?
Est-ce que la requête suivante te conviendrais ?
SELECT * FROM resultat r, entrainement e WHERE r.(clé primaire de résultat)=e.(clé primaire d'entrainement);
Cordialement,
Nikko -
Ce que j'utilise c'est l'id du membre, qui est à la fois dans résultat et dans entrainement.
Pour la requête je vais essayer avec l'id du membre.
Merci. -
Je n'arrive pas à la faire fonctionner
De plus il faudrait pouvoir trier par date_entrainement je pense par ORDER BY date_entrainement ASC.
Je sais pas trop quoi faire ! -
voilà ma requet pour l'instant (j'avoue que je suis un peu paumé pour les requetes complexes !)
$rec = mysql_query ("SELECT * FROM resultat r, entrainements e WHERE r.(id_membre)='".$id_membre."' AND e.(id_membre)='".$id_membre."' ORDER BY date_entrainement ASC"); while ($ent_periode = mysql_fetch_array($rec)) { // affichage }
j'ai comme erreur:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/sites/1/ifrance.com/t/a/tacki-sport/site/index.php on line 1461 (la ligne du mysql_fetch_array donc)
Merci de m'aider ! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
voilà j'ai essayé ça
$rec = mysql_query ("SELECT e.date_entrainement, e.contenu, e.duree_exacte, e.distance_realisee, e.commentaire, e.sensations, r.date_entrainement, r.contenu, r.duree_exacte, r.distance_realisee, r.commentaire, r.sensations FROM resultat r, entrainements e WHERE r.id_membre='".$id_membre."' AND e.id_membre='".$id_membre."' ORDER BY date_entrainement ASC");
Mais ça met toujours le même message d'erreur-
Essai de créer une variable $query par exemple :
$query = "SELECT e.date_entrainement, e.contenu, e.duree_exacte, e.distance_realisee, e.commentaire, e.sensations, r.date_entrainement, r.contenu, r.duree_exacte, r.distance_realisee, r.commentaire, r.sensations FROM resultat r, entrainements e WHERE r.id_membre='".$id_membre."' AND e.id_membre='".$id_membre."'
ORDER BY date_entrainement ASC";
Fais un echo de query;
Ensuite copie colle directement dans mysql; Et regarde l'erreur
-
-
alors j'ai essayé de copier query dans sql ça m'affiche #1052 - Column 'date_entrainement' in order clause is ambiguous
J'ai ensuite essayé la requete sans le ORDER BY et là ça m'affiche le même entrainement 12 fois !
(c'est le nombre de fois ou j'ai précisé une colonne dans SELECT)-
Essai comme ceci
$query = "SELECT e.date_entrainement, e.contenu, e.duree_exacte, e.distance_realisee, e.commentaire, e.sensations, r.date_entrainement, r.contenu, r.duree_exacte, r.distance_realisee, r.commentaire, r.sensations FROM resultat r, entrainements e WHERE r.id_membre=e.id_membre AND e.id_membre='".$id_membre."'
ORDER BY r.date_entrainement ASC";
-
-
Je viens de retester j'avais un problème dans ma table, j'ai dans ma table 1 entrainement et 1 résultat correspondant normalement à la requête, cependant seul le résultat est affiché dans sql (pas l'entrainement qui est à la même date)
-
-
ok maintenant le ORDER BY passe
J'ai bien les 2 résultats mais ils sont enregistré comme 1 seul, il y a dans le tableau 2x la colonne contenu, 2x la colonne sensations etc...
Est-ce que je peux quand même réussir à m'en servir pour faire un affichage ligne par ligne ?
Je vais tester avec plus d'entrainements et de resultats pour vérifier si ça met bien dans le bon ordre.
En tout cas merci de ton aide ! -
Le probleme c'est que vu que ça m'enregistre sur la même ligne un entrainement et un resultat, ils ne sont pas triés ensemble.
De plus j'ai testé avec 3 entrainements et 2 résultats j'obtiens:
1è ligne : Entrainement 1 (contenu, sensations,commentaire...) | Resultat 1 (contenu, sensations,commentaire...)
2è ligne : Entrainement 2 | Resultat 1
3è ligne : Entrainement 3 | Resultat 1
4è ligne : Entrainement 1 | Resultat 2
5è ligne : Entrainement 2 | Resultat 2
6è ligne : Entrainement 3 | Resultat 2 -
finalement j'ai réussi avec un UNION
mysql_query ("(SELECT date_entrainement, contenu, duree_exacte, distance_realisee, commentaire, sensations FROM resultat WHERE id_membre='".$id_membre."' ) UNION ALL (SELECT date_entrainement, contenu, duree_exacte, distance_realisee, commentaire, sensations FROM entrainements WHERE id_membre='".$id_membre."') ORDER BY date_entrainement");
Merci de m'avoir aidé !!!