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

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

2 réponses
Avatar
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

2 réponses

Avatar
Jean-Claude
"HD" a écrit dans le message de news:
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
Avatar
HD
Un grand MERCI à vous Jean-Claude... J'ai pris la solution de l' UNION et ça
fonctionne bien.

--
@+
HD