Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

TOP 2 mais unique ?

3 réponses
Avatar
olivier
Bonjour,

là ! je sèche :-)

Soit une table ETUDIANTS (id, nom)
soit une table COURS (id, etudiant_id, date, code_absence)

J'aimerai avoir la liste des ETUDIANTS étant absents depuis deux cours.


merci
olivier

3 réponses

Avatar
Sylvain Lafontaine
Vous faites un Group By sur le nombre de cours manquants suivi d'un Having
afin de filtrer ceux absents depuix deux cours (exactement ou plus ou moins
selon ce que vous voulez exactement).

Vous ne semblez pas avoir de calendrier, ce qui rend difficile la découverte
du nombre d'absence. De plus, vous ne précisez pas si cela doit être 2
absences pour un cours en particulier ou pour l'ensemble des cours.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Courriel: sylvain2009 sylvainlafontaine com (remplissez les blancs, svp.)
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" wrote in message
news:
Bonjour,

là ! je sèche :-)

Soit une table ETUDIANTS (id, nom)
soit une table COURS (id, etudiant_id, date, code_absence)

J'aimerai avoir la liste des ETUDIANTS étant absents depuis deux cours.


merci
olivier




Avatar
olivier
Salut,
heu, j'ai pas compris.... :-(

ETUDIANTS
id Int
nom varchar(20)

COURS
id INT
etudiant_id INT
datecours DATETIME
code_absence INT

INSERT INTO etudiants (nom) VALUES ('TOTO')
INSERT INTO etudiants (nom) VALUES ('TITI')
INSERT INTO etudiants (nom) VALUES ('TATA')

INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',1 0)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',1 0)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',1 0)

INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',2 1)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',2 1)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',2 1)

INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',3 0)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',3 0)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',3 1)

voici de quoi comprendre :
code_absence = 0 veut dire PRESENT
code_absence = 1 veut dire ABSENT

je veux les etudiants ayant eu au moins 2 absences consécutives lors des
derniers cours.
donc, dans mon exemple, uniquement l'etudiant n° 2 'TITI'


En espérant que c'est plus clair ?

merci
olivier



"Sylvain Lafontaine" a écrit dans le
message de news:
Vous faites un Group By sur le nombre de cours manquants suivi d'un Having
afin de filtrer ceux absents depuix deux cours (exactement ou plus ou
moins selon ce que vous voulez exactement).

Vous ne semblez pas avoir de calendrier, ce qui rend difficile la
découverte du nombre d'absence. De plus, vous ne précisez pas si cela
doit être 2 absences pour un cours en particulier ou pour l'ensemble des
cours.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Courriel: sylvain2009 sylvainlafontaine com (remplissez les blancs, svp.)
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" wrote in message
news:
Bonjour,

là ! je sèche :-)

Soit une table ETUDIANTS (id, nom)
soit une table COURS (id, etudiant_id, date, code_absence)

J'aimerai avoir la liste des ETUDIANTS étant absents depuis deux cours.


merci
olivier








Avatar
Sylvain Lafontaine
Ah, désolé, je n'avais pas vu le champ code_absence.

Vos données sont difficiles à comprendre vu que vous entrez trois fois la
même chose pour le premier et le deuxième étudiant. La notion d' «
absences consécutives » est également difficile à saisir ici. En prenant le
cas simple où vous voulez simplement les étudiants ayant 2 ou plus de 2
absences dans la table cours:

select e.*, sum (c.code_absence)
from etudiants e inner join cours c on e.id = c.etudiant_id
group by e.id, e.nom
having sum (c.code_absence) >= 2

Mettez la dernière ligne (« having sum (c.code_absence) >= 2 ») en
commentaire si vous voulez y voir plus clair. Aussi, afin de simplier la
lecture de vos tables, vous devriez utiliser cours_id et etudiant_id (ou
mieux encore car plus facile à lire: CoursId et EtudiantId) au lieu de ID et
ID pour les tables Cours et Etudiants.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Courriel: sylvain2009 sylvainlafontaine com (remplissez les blancs, svp.)
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" wrote in message
news:%
Salut,
heu, j'ai pas compris.... :-(

ETUDIANTS
id Int
nom varchar(20)

COURS
id INT
etudiant_id INT
datecours DATETIME
code_absence INT

INSERT INTO etudiants (nom) VALUES ('TOTO')
INSERT INTO etudiants (nom) VALUES ('TITI')
INSERT INTO etudiants (nom) VALUES ('TATA')

INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',1 0)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',1 0)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',1 0)

INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',2 1)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',2 1)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',2 1)

INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',3 0)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',3 0)
INSERT INTO COURS (datecours,etudiant_id , code_absence) VALUES
('01/01/2009',3 1)

voici de quoi comprendre :
code_absence = 0 veut dire PRESENT
code_absence = 1 veut dire ABSENT

je veux les etudiants ayant eu au moins 2 absences consécutives lors des
derniers cours.
donc, dans mon exemple, uniquement l'etudiant n° 2 'TITI'


En espérant que c'est plus clair ?

merci
olivier



"Sylvain Lafontaine" a écrit dans le
message de news:
Vous faites un Group By sur le nombre de cours manquants suivi d'un
Having afin de filtrer ceux absents depuix deux cours (exactement ou plus
ou moins selon ce que vous voulez exactement).

Vous ne semblez pas avoir de calendrier, ce qui rend difficile la
découverte du nombre d'absence. De plus, vous ne précisez pas si cela
doit être 2 absences pour un cours en particulier ou pour l'ensemble des
cours.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Courriel: sylvain2009 sylvainlafontaine com (remplissez les blancs, svp.)
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" wrote in message
news:
Bonjour,

là ! je sèche :-)

Soit une table ETUDIANTS (id, nom)
soit une table COURS (id, etudiant_id, date, code_absence)

J'aimerai avoir la liste des ETUDIANTS étant absents depuis deux cours.


merci
olivier