Mysql afficher les résultats de 2 tables

Résolu/Fermé
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013 - 5 nov. 2008 à 13:37
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013 - 5 nov. 2008 à 17:16
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 !
A voir également:

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
0
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013
5 nov. 2008 à 15:19
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.
0
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013
5 nov. 2008 à 15:33
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 !
0
Bonjour à toi,

Montres nous ta requête sql .
0
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013
5 nov. 2008 à 15:45
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 !
0
Alors 1 ère chose les parenthèses ne sont pas nécessaires e.(id_membre)

Ensuite dans ton select * remplace * par les champs que tu veux afficher e.id_membre, ... etc
0

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

Posez votre question
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013
5 nov. 2008 à 16:00
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
0
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
0
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013
5 nov. 2008 à 16:22
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)
0
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";
0
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013
5 nov. 2008 à 16:27
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)
0
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013
5 nov. 2008 à 16:28
je réessaye avec ton dernier post merci !!!
0
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013
5 nov. 2008 à 16:33
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 !
0
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013
5 nov. 2008 à 16:50
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
0
tacki Messages postés 20 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 18 novembre 2013
5 nov. 2008 à 17:16
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é !!!
0