Bonjour à tous,
après avoir trouvé une solution (grace à milkoseck) à un probleme que je me posait en SQL, je solicite à nouveau votre aide car j'ai actuellement 3 méthodes pour arriver à mes fins mais la dernière ne marche malheureusement pas et je souhaiterais comprendre pourquoi.
J'ai une table (fictive) comprenant 2 champs (EQUID) et (STATUT). J'aimerais pouvoir effectuer une requete sur cette table afin de récupérer TOUS les (EQUID) dont tous les statut sont "CLOT". Dans l'exemple ci-dessous, les seuls EQUID dont l'ensemble des STATUT est CLOT seraient les suivants : B,E et G.
Voici la tables :
N° ID_EQUID ID_STATUT
21 A OUV
22 A A PREP
23 A A PREP
24 A CLOT
25 A CLOT
26 B CLOT
27 B CLOT
28 B CLOT
29 C CLOT
30 C CLOT
31 C OUV
32 C CLOT
33 D CLOT
34 D A PREP
35 E CLOT
36 F OUV
37 F OUV
38 F OUV
39 G CLOT
40 G CLOT
Voici mes 3 solutions :
'SOLUTION V1
requete = "SELECT DISTINCT [Q1].[ID_EQUID] FROM ("
requete = requete & "SELECT DISTINCT [TBLTEST].[ID_EQUID] FROM [TBLTEST]) AS [Q1] LEFT JOIN ("
requete = requete & "SELECT DISTINCT [TBLTEST].[ID_EQUID] FROM [TBLTEST] WHERE [TBLTEST].[ID_STATUT] NOT LIKE '" & "CLOT" & "') AS [Q2] ON [Q1].[ID_EQUID]=[Q2].[ID_EQUID] WHERE ISNULL(Q2.ID_EQUID)"
'SOLUTION V2
requete = "SELECT DISTINCT [Q1].[ID_EQUID] FROM [TBLTEST] AS [Q1] WHERE NOT EXISTS ("
requete = requete & "SELECT [TBLTEST].[ID_EQUID] FROM [TBLTEST] WHERE [Q1].[ID_EQUID]=[TBLTEST].[ID_EQUID] AND [TBLTEST].[ID_STATUT] NOT LIKE '" & "CLOT" & "')"
'SOLUTION V2_BIS (NE MARCHE PAS CAR NE RENVOIE RIEN "VIDE")
requete = "SELECT [TBLTEST].[ID_EQUID] FROM [TBLTEST] WHERE NOT EXISTS ("
requete = requete & "SELECT [TBLTEST].[ID_EQUID] FROM [TBLTEST] WHERE [TBLTEST].[ID_STATUT] NOT LIKE '" & "CLOT" & "')"
En vous remerciant d'avance,
Cordialement,
Jérémy.
Partager