Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/09/2011, 10h24   #1
Membre régulier
 
Avatar de jubourbon
 
Homme
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 96
Points : 96
Par défaut Requête avec jointure qui retourne null si pas de valeur

Bonjour,

Je travaille sous Microsoft SQL 2008.
Mon développement tourne autour de la création de projet. Chacun de ces projets possède une date de démarrage et une date de fin. Ces dates peuvent être modifiées et la modification de ces dates est historisée.

Ma base comporte 3 tables:
  • Projet: IDProjet, NomProjet
  • DatesProjet: IDDate, ValeurDate, CreationDate
  • HistoProjetDate: IDHisto, IDProjet, IDDate, NomDate

Avec les jointures entre ces 3 tables.

Quand je fais cette requête :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
SELECT DateDebut.ValeurDate AS DateDebut,
DateFin.ValeurDate AS DateFin
FROM
(SELECT TOP(1)DatesProjet.ValeurDate, HistoDateProjet.IDProjet
		FROM         DatesProjet  INNER JOIN
             HistoDateProjet  ON DatesProjet.IDDate = HistoDateProjet.IDDateProjet
		WHERE HistoDateProjet.NomDate='DateDebut'
		ORDER BY CreationDate DESC) AS DateDebut,
(SELECT TOP(1)DatesProjet.ValeurDate, HistoDateProjet.IDProjet
		FROM         DatesProjet  INNER JOIN
             HistoDateProjet  ON DatesProjet.IDDate = HistoDateProjet.IDDateProjet
		WHERE HistoDateProjet.NomDate='DateFin'
		ORDER BY CreationDate DESC) AS DateFin,
Projet
WHERE Projet.IDprojet=DateDebut.IDProjet AND Projet.IDProjet=DateDebut.IDProjet
Le résultat retourné est de type :
datedebut datefin
31/08/2011 02/09/2011

En revanche quand le projet n'a pas encore de date de fin le résultat ne m'est pas retourné.

Je souhaiterais que dans ce cas le résultat retourné soit du type :
datedebut datefin
31/08/2011 NULL

J'ai fait quelques recherches sur internet sans succès.
Comment puis je réaliser cela?

D'avance merci.
jubourbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 10h53   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 543
Points : 7 543
Utilisez une jointure externe...
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/09/2011, 11h10   #3
Membre régulier
 
Avatar de jubourbon
 
Homme
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 96
Points : 96
Merci
jubourbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h38.


 
 
 
 
Partenaires

Hébergement Web