Les Allergies
Alimentaires
Posez votre question Signaler

Mysql afficher les résultats de 2 tables

tacki 19Messages postés 14 août 2007Date d'inscription - Dernière réponse le 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 !
Lire la suite 

Mysql afficher les résultats de 2 tables »

15 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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 !
doudi - 5 nov. 2008 à 15:40
Bonjour à toi,

Montres nous ta requête sql .
Ajouter un commentaire
Réponse
+0
moins plus
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 !
doudi - 5 nov. 2008 à 15:49
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
Ajouter un commentaire
Réponse
+0
moins plus
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
doudi - 5 nov. 2008 à 16:09
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
Ajouter un commentaire
Réponse
+0
moins plus
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)
doudi - 5 nov. 2008 à 16:24
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";
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
je réessaye avec ton dernier post merci !!!
Ajouter un commentaire
Réponse
+0
moins plus
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 !
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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é !!!
Ajouter un commentaire
Ce document intitulé « Mysql afficher les résultats de 2 tables » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?