Bonjour,

Cela fait longtemps que je n'ai pas fait de SQL complexe, et la je bloque.
Elle est complexe de part la complexité de ma BDD:

- J'ai 3 tables : COURSE, ASSOCIER_COURSE, STATUT_COURSE
structure des tables;

COURSE(Num_course,#Num_demande,...)
STATUT_COURSE(Num_statut_course,Nom_statut_course)
ASSOCIER_COURSE(#Num_demande,#Num_course,#Num_statut_course,Date_associer_course)

1.ASSOCIER_COURSE est une table intermédiaire entre COURSE et STATUT_COURSE, afin de sauvegarder chaque changement de statut à une date j.

2.Une demande, peut avoir plusieurs courses

Voici ce que je cherche à faire avec ma requète :

Je veux afficher dans un datagridview toutes les courses qui sont uniquement au statut 1 ( nom_statut = Ouvert), et pas les courses qui ont qui ont un Num_statut_course à 2,3,4,5,6.

Voici ma requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"Select D.Num_demande as NuméroDemande, AC.Num_course as NuméroCourse, SC.Nom_statut_course as Statut, " & _
        "AC.Num_statut_course as NuméroStatutCourse, AC.Date_associer_course as DateMAJStatut " & _
        "from ASSOCIER_COURSE AC, STATUT_COURSE SC, DEMANDE D, COURSE C " & _
        "where AC.Num_statut_course = SC.Num_statut_course " & _
        "and AC.Num_statut_course = '1' " & _
        "and D.num_demande = C.num_demande " & _
        "and AC.Num_course = C.Num_course " & _
        "and AC.Num_demande = D.Num_demande " & _
        "and C.Num_course Not in ( Select C1.Num_course " & _
        "from ASSOCIER_COURSE AC1, COURSE C1, STATUT_COURSE SC1 " & _
        "where C1.Num_demande = AC1.Num_demande " & _
        "and C1.Num_course = AC1.Num_course " & _
        "and AC1.Num_statut_course = SC1.Num_statut_course " & _
        "and AC1.Num_statut_course = '2' " & _
        "or AC1.Num_statut_course = '3' " & _
        "or AC1.Num_statut_course = '4' " & _
        "or AC1.Num_statut_course = '5' " & _
        "or AC1.Num_statut_course = '6' )"
La ou sa bloque c'est que dans mon Not in, je peux comparé que un champs : ici Num_course... le resultat est donc qu'il me retire toutes les courses au statut 2,3,4,5,6 sans prendre en compte le Num_demande...
Je veux que ma requète associe le Num_course au Num_demande qui lui convient.

Un pti Exemple:

Ce que j'ai dans ma table ASSOCIER_DEMANDE :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Num_demande | Num_course | Num_Statut_course
          1 | 1 | 1
          1 | 2 | 1
          2 | 1 | 1
          2 | 2 | 2
          2 | 3 | 1
ce que ma requête me retourne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Num_demande | Num_course | Num_Statut_course
          1 | 1
          2 | 1
          2 | 3
Ainsi il me supprime toutes les lignes ou mon Num_course = 2

Ce que je souhaite obtenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Num_demande | Num_course | Num_Statut_course
          1 | 1
          1 | 2 | 1
          2 | 1
          2 | 3
J'espère avoir été le plus clair possible, Merci par avance de votre aide