par
Cypher_PHP » 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
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';
voici la structure d'agent
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 ;
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
[code]
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]
voici la structure d'agent
[code]
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 ;
[/code]
voici la structure de session
[code]
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 ;
[/code]