je dispose d'une base de gestion d'un (petit) effectif afin de calculer le temps de présence de chacun.

pour faire simple, on va dire que j'ai une table des effectifs (t_membre), une table des membres présents et une table des remplacants.

principe: des membres sont titulaires, d'autres ont remplaçants et les remplaçants peuvent remplacer les membres titulaires ...

je voudrais compter le nb de fois (par jour) où des membres sont titulaires puis remplaces (ce que j'arrive à faire), puis le nb de fois où des remplaçants remplacent les titulaires (j'arrive aussi à faire) et le nb de fois où les titulaires ne son jamais remplacés (ça j'arrive pas à faire...).

# phpMyAdmin MySQL-Dump
# version 2.2.6
# http://phpwizard.net/phpMyAdmin/
# http://www.phpmyadmin.net/ (download page)
#
# Serveur: localhost
# Généré le : Mardi 16 Novembre 2004 à 23:28
# Version du serveur: 3.23.49
# Version de PHP: 4.2.0
# Base de données: `effectif`
# --------------------------------------------------------

#
# Structure de la table `t_gestion`
#

DROP TABLE IF EXISTS `t_gestion`;
CREATE TABLE `t_gestion` (
`id_gestion` mediumint(8) unsigned NOT NULL default '0',
`id_membre` mediumint(8) unsigned NOT NULL default '0',
`etat` enum('titulaire','remplacant') NOT NULL default 'titulaire',
PRIMARY KEY (`id_gestion`,`id_membre`)
) TYPE=MyISAM;

#
# Contenu de la table `t_gestion`
#

INSERT INTO `t_gestion` (`id_gestion`, `id_membre`, `etat`) VALUES (1, 1, 'titulaire'),
(1, 2, 'titulaire'),
(1, 3, 'titulaire'),
(1, 4, 'remplacant'),
(1, 5, 'remplacant'),
(2, 1, 'titulaire'),
(2, 2, 'titulaire'),
(2, 3, 'remplacant'),
(2, 4, 'remplacant'),
(3, 2, 'titulaire'),
(3, 4, 'remplacant'),
(3, 5, 'remplacant'),
(4, 1, 'titulaire'),
(4, 2, 'titulaire'),
(4, 3, 'remplacant'),
(4, 4, 'remplacant'),
(4, 5, 'remplacant');
# --------------------------------------------------------

#
# Structure de la table `t_membre`
#

DROP TABLE IF EXISTS `t_membre`;
CREATE TABLE `t_membre` (
`id_membre` mediumint(8) unsigned NOT NULL auto_increment,
`nom_membre` varchar(30) NOT NULL default '',
PRIMARY KEY (`id_membre`)
) TYPE=MyISAM;

#
# Contenu de la table `t_membre`
#

INSERT INTO `t_membre` (`id_membre`, `nom_membre`) VALUES (1, 'david'),
(2, 'sebastien'),
(3, 'nicolas'),
(4, 'etienne'),
(5, 'maurice');
# --------------------------------------------------------

#
# Structure de la table `t_remplacement`
#

DROP TABLE IF EXISTS `t_remplacement`;
CREATE TABLE `t_remplacement` (
`id_remplacement` mediumint(8) unsigned NOT NULL auto_increment,
`id_membre_remplace` mediumint(8) unsigned NOT NULL default '0',
`id_membre_remplacant` mediumint(8) unsigned NOT NULL default '0',
`id_gestion` mediumint(8) unsigned NOT NULL default '0',
PRIMARY KEY (`id_remplacement`)
) TYPE=MyISAM;

#
# Contenu de la table `t_remplacement`
#

INSERT INTO `t_remplacement` (`id_remplacement`, `id_membre_remplace`, `id_membre_remplacant`, `id_gestion`) VALUES (1, 2, 5, 1),
(2, 1, 5, 4),
(3, 2, 4, 4);

ainsi par exemple:

select nom_membre, g.id_membre, count(*) as c
from t_gestion g inner join t_remplacement r on g.id_gestion=r.id_gestion, t_membre m
where

g.etat='titulaire'
and m.id_membre=g.id_membre
and m.id_membre=r.id_membre_remplace
group by g.id_membre
me donne:

nom_membre || id_membre || c
david-------------------1--------------1
sebastien--------------2---------------2
pour les besoins, j'ai simplifié les choses et la base (j'espère pas trop !) et limité les données (j'espère ici pas trop non plus).

je n'arrive pas à ressortir le nb d'occurence de chauqe membre lorsqu'il est titulaire mais non remplacé, soit ici:

nom_membre || id_membre || c
david-------------------1--------------3
sebastien--------------2-------------- 2
nicolas-----------------3--------------1
etienne---------------- 4--------------0
maurice----------------5--------------0
PS: je ne sais pas si on aurait pu effectuer une jointure reflexive, les champs id_membre_remplace et id_membre_remplacant sont redondants en fait ...

voila, si qq'un peut m'aider à résoudre cela :o

Merci