[VBA] Problème avec une requête SQL

Le
HD
Bonjour,

J'espère ne pas être trop HS mais je n'ai pas trouvé de NewsGroup où
parler de celà

Sur Excel, j'ai une macro qui se connecte à une base de donnée

Req = "SELECT DISTINCT dossiers.NomDossier, dossiers.* " & Chr(10) & _
"FROM dossiers, Missions WHERE Dossiers.Noeg = Missions.Noreg"
Req = Req & " AND ((Missions.Code = 'T' OR Missions.Code = 'R') OR
Dossiers.Type = 'P')"

Mon problème est que dans le cas où j'aurais un dossier dont le Type est 'P'
celui ci ne ressort pas alors que j'ai bien des dossiers 'P' dans ma
table dossiers Par contre, ces dossiers de Type 'P' ne se trouvent pas
dans la table Missions d'où le fait que la jointure entre Dossiers et
Missions doit, de fait, exclure les dossiers qui n'y apparaissent pas

Merci d'avance pour votre aide
--
@+
HD
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
Jean-Claude
Le #22678751
"HD" i99nqm$1atk$
Bonjour,

J'espère ne pas être trop HS... mais je n'ai pas trouvé de NewsGroup où
parler de celà...

Sur Excel, j'ai une macro qui se connecte à une base de donnée...

Req = "SELECT DISTINCT dossiers.NomDossier, dossiers.* " & Chr(10) & _
"FROM dossiers, Missions WHERE Dossiers.Noeg = Missions.Noreg"
Req = Req & " AND ((Missions.Code = 'T' OR Missions.Code = 'R') OR
Dossiers.Type = 'P')"

Mon problème est que dans le cas où j'aurais un dossier dont le Type est
'P' celui ci ne ressort pas... alors que j'ai bien des dossiers 'P' dans
ma table dossiers... Par contre, ces dossiers de Type 'P' ne se trouvent
pas dans la table Missions... d'où le fait que la jointure entre Dossiers
et Missions doit, de fait, exclure les dossiers qui n'y apparaissent
pas...

Merci d'avance pour votre aide
--
@+
HD



Bonjour,

utiliser une jointure externe, quelque chose du genre :

SELECT DISTINCT dossiers.*
FROM dossiers LEFT OUTER JOIN Missions
ON Dossiers.Noeg = Missions.Noreg
WHERE (Dossiers.Type = 'P')
OR ((Dossiers.Type <> 'P') AND (Missions.Code = 'T' OR Missions.Code = 'R'))

ou bien une union :


SELECT DISTINCT dossiers.*
FROM dossiers WHERE Dossiers.Type = 'P'
UNION
SELECT DISTINCT dossiers.*
FROM dossiers JOIN Missions ON Dossiers.Noeg = Missions.Noreg
WHERE (Dossiers.Type <> 'P') AND (Missions.Code = 'T' OR Missions.Code =
'R')


JC
HD
Le #22695941
Un grand MERCI à vous Jean-Claude... J'ai pris la solution de l' UNION et ça
fonctionne bien.

--
@+
HD
Publicité
Poster une réponse
Anonyme