TOP 2 mais unique ?

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sylvain Lafontaine
Le #19833831
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" 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




olivier
Le #19834871
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" 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" 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








Sylvain Lafontaine
Le #19835371
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" 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" 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" 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












Publicité
Poster une réponse
Anonyme