Difficultés Mysql - PHP - Programmation
Marsh Posté le 24-10-2012 à 16:45:11
Salut,
SELECT e.nom, e.prenom, p.date, f.titre
FROM eleve e
INNER JOIN presence p ON p.id_eleve = e.id_eleve
INNER JOIN formation f ON f.id_formation = p.id_formation
Sinon c'est plutôt cat SQL
Marsh Posté le 24-10-2012 à 16:46:22
Code :
|
Ensuite tu récupères tous les champs que tu veux tranquillement.
yellu a écrit : Salut, SELECT e.nom, e.prenom, p.date, f.titre Sinon c'est plutôt cat SQL |
Grilled.
Sinon e.id_eleve n'existe pas.
Mais j'avoue qu'intuitivement, j'ai fait la même chose que toi.
Ce serait mieux dans tes tables d'avoir le nom des id, genre :
"id_eleve"
"id_formation" au lieu de "id" tout simple, c'est plus clair.
Marsh Posté le 24-10-2012 à 17:31:02
J'ai suivi vos conseilles et j'ai renommé les id, maintenant tout fonctionne parfaitement grâce à vous
Un tout grand merci pour votre aide.
Marsh Posté le 26-10-2012 à 20:33:30
Bonsoir à tous,
Je reviens vers vous avec un nouveau souci, voilà dans le champ id_eleve de la table présence, je place plusieurs id séparés par des virgules (ex: 12,25,32).
Pour afficher toutes les formations suivies par un élève, j'utilise WHERE FIND_IN_SET('$id',P.id_eleve) ORDER BY date ASC
Mais là où je bloque, c'est lorsque je veux afficher tous les élèves présents aux cours, pour l'instant la fonction est ok s'il n'y a qu'un id_eleve (ou le premier id).
$sql ="SELECT nom, prenom, groupe, date, titre FROM eleve E
JOIN presence P ON P.id_eleve = E.id_eleve
JOIN formation F ON F.id_formation = P.id_formation
WHERE P.id_formation = '$id_formation' ORDER BY groupe ASC";
Comment puis-je la modifier ?
Merci d'avance,
François
Marsh Posté le 27-10-2012 à 10:18:17
Bonjour !
J'ai plus l'habitude de faire des jointures implicites, sans mot-clé "JOIN", et la requête pourrait être écrite comme ça :
Select e.nom, e.prenom, e.groupe p.date, f.titre |
Aux erreurs de frappe près (je n'ai pas de base mysql sous la main pour vérifier la requête), l'important c'est l'idée
Bon courage !
Marsh Posté le 29-10-2012 à 09:14:08
Re-salut !
Pourquoi stockes-tu plusieurs "id_eleve" dans ce champs ?
Ta modélisation de table te permettrait pourtant de garder une granularité (1 eleve / 1 formation) dans la table des présences.
J'ai peur que tu n'ai choisis cette solution en raison de tes difficultés de requétage (connaissance du GROUP BY et du LEFT JOIN notamment).
Marsh Posté le 30-10-2012 à 10:55:38
Bonjour Yellu,
C'était pour avoir une entrée dans la table pour 10 élèves présents à la formation.
Maintenant, si je ne risque pas de charger la base, un élève, une formation c'est OK pour moi
Merci,
François
Marsh Posté le 24-10-2012 à 16:38:06
Bonjour,
Je suis débutant en PHP/MYSQL et je m'attaque aux jointures, mais là avec trois tables, je bloque..
Si quelqu'un pouvait m'aider, ce serait vraiment sympa
J'ai créé une base SQL avec trois tables
formation
| id | titre | duree | info |
eleve
| id | nom | prenom | groupe |
presence
| id | id_formation | id_eleve | date |
Objectif: répertorier les présences à des formations.
Ensuite, je bloque sur la requête qui fait la correlation entre id_formation et formation.id ainsi que id_eleve et eleve.id
Le but étant finalement d'afficher le nom + le prénom et la date des différents élèves qui ont suivi la formation X.
Merci d'avance pour votre aide.
François
Message édité par francois55 le 27-10-2012 à 07:00:19