affichage impossible si valeur inexistante
Posté : 03 déc. 2008, 18:00
bonjour
je poste ce message car je me heurte au problème de COUNT. d'après la documentation mysql, cette fonction ne peut pas calculer sur des valeurs inexistantes ou NULL. je cherche une solution pour palier ce problème.
quand une session de formation est crée avec le nombre de places (disons 7), logiquement le nombre de places inscrites sera 0 (zéro) puisqu'à l'instant, il y a personne. donc le nombre de places vacantes sera 7 (en attendant).
en fait, un agent choisit une session de formation sur une liste de sessions et s'y inscrit.
résultat: il m'affiche la liste des sessions qui contiennent uniquement des personnes qui s'inscrivent puisque la fonction WHERE et COUNT retourne des valeurs existantes.
Or, je veux toute la liste des sessions qui devraient afficher le nombre de places restantes, même c'est à 0 (pas d'inscriptions).
avez vous une idée?
merci de vos aides
voici ma syntaxe mysql
voici la structure d'agent
voici la structure de session
je poste ce message car je me heurte au problème de COUNT. d'après la documentation mysql, cette fonction ne peut pas calculer sur des valeurs inexistantes ou NULL. je cherche une solution pour palier ce problème.
quand une session de formation est crée avec le nombre de places (disons 7), logiquement le nombre de places inscrites sera 0 (zéro) puisqu'à l'instant, il y a personne. donc le nombre de places vacantes sera 7 (en attendant).
en fait, un agent choisit une session de formation sur une liste de sessions et s'y inscrit.
résultat: il m'affiche la liste des sessions qui contiennent uniquement des personnes qui s'inscrivent puisque la fonction WHERE et COUNT retourne des valeurs existantes.
Or, je veux toute la liste des sessions qui devraient afficher le nombre de places restantes, même c'est à 0 (pas d'inscriptions).
avez vous une idée?
merci de vos aides
voici ma syntaxe mysql
Code : Tout sélectionner
SELECT session.id_session, session.session, intitule, commentaires, nomcomplet, horaire_matin, horaire_apres_midi, salle, places,
(places - count(agent.id_session)) AS restant, code, date_debut, date_fin, visible
FROM session, agent
WHERE session.id_session = agent.id_session
GROUP BY session.id_session';
Code : Tout sélectionner
CREATE TABLE `agent` (
`id_agent` int(3) NOT NULL auto_increment,
`nom` varchar(50) NOT NULL,
`prenom` varchar(50) NOT NULL,
`id_session` int(3) NOT NULL,
`session` varchar(20) NOT NULL,
KEY `id_agent` (`id_agent`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=45 ;
voici la structure de session
Code : Tout sélectionner
CREATE TABLE `session` (
`id_session` int(3) NOT NULL auto_increment,
`session` varchar(25) NOT NULL,
`intitule` varchar(50) NOT NULL,
`commentaires` text NOT NULL,
`nomcomplet` varchar(50) NOT NULL,
`horaire_matin` varchar(17) NOT NULL,
`horaire_apres_midi` varchar(17) NOT NULL,
`salle` varchar(10) NOT NULL,
`places` varchar(3) NOT NULL,
`code` varchar(10) NOT NULL,
`date_debut` varchar(17) NOT NULL,
`date_fin` varchar(17) NOT NULL,
`visible` char(1) default NULL,
KEY `id_session` (`id_session`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;