Voila ça sera peut-être plus simple à comprendre.
Donc en fait oui la requête me renvoit bien ce que je veux car en fait je cherche tous les enregistrements qui sont à la fois dans la table PANNE et dans la table VALEUR.
Pour exploiter cette BD, j'ai créé un formulaire avec différent choix possibles. Donc selon les choix, mes jointures vont être différentes. Donc je pensais faire un système pour construire ma requête du style :
Code :
- strSql = "SELECT " & Champs & " FROM " & Tables & " WHERE enr.Id_equip in (" & strChamps & " )" & Filtre & "
|
Ce qui me permet de renseigner la variables Tables de la manière suivante par exemple :
Code :
- Tables = Tables & " Left Join STATION st On st.Id_station=eq.Id_station) INNER JOIN ENREGISTREMENT enr ON eq.Id_equip = enr.Id_equip"
|
Mais le problème c'est que apparament celà n'est pas possible puisqu'il faut définir un ordre de priorité pour les jointures avec les join. Par conséquent, je ne pourrais pas utiliser la méthode avec union.
Donc je ne sais pas si c'est une bonne idée mais je n'en vois pas d'autre, je pensais faire :
Code :
- Select Case Choix
- Case "1" 'Table ETAT, VALEUR, ENREGISTREMENT, EQUIPEMENT, STATION
- Tables = "ETAT AS et INNER JOIN ((EQUIPEMENT AS eq LEFT JOIN STATION AS st ON eq.Id_station = st.Id_station) INNER JOIN (ENREGISTREMENT AS enr INNER JOIN VALEUR AS v ON enr.Id_enr = v.Id_enr) ON eq.Id_equip = enr.Id_equip) ON [et].Id_etat = v.Id_etat"
- Case "2" 'On choisit la table ETAT et la table PARAM
- Tables = "PARAM RIGHT JOIN ((ETAT RIGHT JOIN ((EQUIPEMENT INNER JOIN ENREGISTREMENT ON EQUIPEMENT.Id_equip = ENREGISTREMENT.Id_equip) INNER JOIN VALEUR ON ENREGISTREMENT.Id_enr = VALEUR.Id_enr) ON ETAT.Id_etat = VALEUR.Id_etat) INNER JOIN STATION ON EQUIPEMENT.Id_station = STATION.Id_station) ON PARAM.Id_param = VALEUR.Id_param"
- Case "3" 'On choisit que la table PARAM
- Tables = "PARAM INNER JOIN (((EQUIPEMENT INNER JOIN ENREGISTREMENT ON EQUIPEMENT.Id_equip = ENREGISTREMENT.Id_equip) INNER JOIN VALEUR ON ENREGISTREMENT.Id_enr = VALEUR.Id_enr) INNER JOIN STATION ON EQUIPEMENT.Id_station = STATION.Id_station) ON PARAM.Id_param = VALEUR.Id_param"
- Case "4" 'On choisit que la table PANNE
- Tables = "((EQUIPEMENT INNER JOIN ENREGISTREMENT ON EQUIPEMENT.Id_equip = ENREGISTREMENT.Id_equip) INNER JOIN STATION ON EQUIPEMENT.Id_station = STATION.Id_station) INNER JOIN PANNE ON ENREGISTREMENT.Id_enr = PANNE.Id_enr"
- Case "5" 'On choisit les table ETAT et PANNE
- Tables = ""
- Case "6" 'On choisit les table PARAM et PANNE
- Tables = ""
- Case Else
- MsgBox ("Problème dans les jointures." )
- End Select
|