SQL - Date maximum valeur null

nuth Messages postés 13 Date d'inscription mardi 23 novembre 2004 Statut Membre Dernière intervention 10 août 2009 - 4 mars 2009 à 15:38
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 5 mars 2009 à 11:49
Hello, hello !

J'ai un petit soucis sur une requête, donc je vous expose le problème. Je dispose de deux tables Contact et Entretien. Un contact peut avoir aucun ou plusieurs entretiens.
Structure :
Table Contact ( id_contact )
Table Entretien ( id_entretien, id_fk_contact, date_entretien )

date_entretien peut avoir la valeur NULL
Je souhaiterai avoir la liste de tous les contacts classé par date maximum d'entretien.

Puisque un contact peut ne pas avoir d'entretien je suis obligé d'effectuer une jointure externe.
SELECT *
FROM CONTACT a LEFT OUTER JOIN  ENTRETIEN b
    ON a.id_contact  = b.id_fk_contact

Avec ceci j'obtiens tous les contacts mais avec tous les entretiens. Et là je bloque auriez vous une idée pour garder les date d'entretien maximum sachant qu'elles peuvent avoir la valeur null.

Merci d'avance
Nuth.

 

2 réponses

nuth Messages postés 13 Date d'inscription mardi 23 novembre 2004 Statut Membre Dernière intervention 10 août 2009
4 mars 2009 à 17:16
Re,

En ajoutant deux condition tout simplement  date_es is null.or date_es =  ( select max(date_es) from entretien )

A+
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 mars 2009 à 11:49
Salut,

Plus simple et plus performant

select personne.id,nom,max(date) from personne

left  join rdv on rdv.id = personne.id

group by personne.id,nom

order by personne.id

Jeu d'essai :
=========

/*
insert into rdv values(1,null)
insert into rdv values(2,null)
insert into rdv values(3,null)
insert into rdv values(2,'2008-12-23')
insert into rdv values(3,'2008-12-23')
insert into rdv values(2,'2008-12-23')
insert into rdv values(4,'2008-12-23')
insert into rdv values(4,'2009-12-23')

insert into personne values(1,'toto')
insert into personne values(2,'titi')
insert into personne values(3,'tata')
insert into personne values(4,'tutu')
insert into personne values(5,'tyty')
*/
0
Rejoignez-nous