[Résolu] Selection selon champs d'une autre table

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

[Résolu] Selection selon champs d'une autre table

Message par martinterrier »

Bonjour à tous,

Dans la base ci-jointe (cf requête REQ_ETABLISSEMENT_SANS_CONTROLE), je cherche à sélectionner dans une requête les établissements qui n'ont pas fait l'objet d'un contrôle ET n'ont pas fait l'objet d'un contrôle avec la thématique de contrôle "LRAR". Autrement dit, ceux qui n'ont pas d'ID contrôle associé et ceux, ayant fait l'objet d'un contrôle ou plus, qui n'ont pas de thématique de contrôle ID_3 (LRAR) associé

Concrètement, le résultat devrait être les ID_ ETABLISSEMENT : 58, 59, 61 et 62.

Je tente donc la requête suivante :
Annotation 2022-09-21 140309.png
Cette requête me ramène, en sus des ID recherchés, l' ID 57: l'établissement ID_57 apparait puisque les deux thématiques de contrôle 3 et 4 ont bien été faites le concernant, il apparait puisque j'ai demandé toutes les thématiques (+ quand le champs est nul) sauf la "3":
Annotation 2022-09-21 140441.png
Ceci constitue donc un problème puisque l'établissement "ID_57" a déjà bénéficié de la campagne de contrôle "LRAR" : si je cherchais à n'obtenir que les établissements n'ayant pas encore fait l'objet d'une telle campagne, alors cet établissement recevrait un nouveau contrôle "LRAR" qui ferait alors doublon.

Je comprends donc bien pourquoi l'ID_57 s'affiche, mais je ne parviens pas à me formuler / comprendre comment ne pas le faire apparaitre. J'ai tenté un certain nombre de combinaisons avec "OR", mais je ne parviens jamais au résultat escompté. je pense que la solution doit être du côté de l'association de conditions style "ne pas afficher les établissements qui ont fait l'objet de contrôles avec les thématiques ID3 et ID4" mais je n'arrive pas à le traduire en SQL...

Je vous remercie pour votre aide et j'espère que la base jointe sera assez parlante, en complément de ce que j'ai essayé de synthétiser ici.

Merci et bon après-midi!
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par martinterrier le 16 oct. 2022 15:06, modifié 1 fois.
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: Selection selon champs d'une autre table

Message par Dude »

Chez moi, OpenOffice m'affiche "T_THEMATIQUE_CONTROLE"."ID_THEMATIQUE_CONTROLE" avec une valeur.
Il ne peut en être autrement puisque tu as une relation.
Donc forcément IS NULL ne peut pas fonctionner.

.
capture.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

Re: Selection selon champs d'une autre table

Message par martinterrier »

Bonjour Dude,

merci de t'intéresser au sujet.

Je viens de télécharger ma base depuis le post et je n'obtiens pas la même chose -> c'est bien vide chez moi:
Annotation 2022-09-22 101452.png
Toujours est-il que cela ne change pas fondamentalement le problème (dans ton cas, bien sur, remplacer IS EMPTY par 0).

Je ne parviens de mon côté toujours pas à exclure (ou d'ailleurs, à afficher uniquement) les établissements qui ont des contrôles de type 3 et 4!

merci pour toute aide et bonne journée!
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Selection selon champs d'une autre table

Message par jeanmimi »

Bonjour,
Pour reproduire l'affichage de la Requête de Dude, tu peux saisir cette instruction SQL dans la Requête :
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
HRk2o
Membre cOOnverti
Membre cOOnverti
Messages : 366
Inscription : 29 mai 2009 08:51
Localisation : Guyane

Re: Selection selon champs d'une autre table

Message par HRk2o »

Bonjour,
Je ne parviens de mon côté toujours pas à exclure (ou d'ailleurs, à afficher uniquement) les établissements qui ont des contrôles de type 3 et 4!
et de cette façon:
Capture d’écran 1.png
Capture d’écran 2.png
@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Windows 10 sous AOO 4.1.16 et LibO 24.8.5.2
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

Re: Selection selon champs d'une autre table

Message par martinterrier »

Bonjour HRk2o,

Merci pour cette réponse, mais ce n'est pas ce que je cherche! Tu constateras qu'avec IN, les établissements ID_57 et ID_60 apparaissent : je ne veux justement pas qu'ils soient pris en compte dans la requête, qui a pour finalité de ne sélectionner que les établissements :
1) Qui n'ont pas fait l'objet d'un contrôle
et
2) Qui n'ont pas fait l'objet d'un contrôle avec la thématique "LRAR".

Merci et bon après-midi!
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: Selection selon champs d'une autre table

Message par Dude »

martinterrier a écrit : 22 sept. 2022 12:03 ne sélectionner que les établissements :
1) Qui n'ont pas fait l'objet d'un contrôle
et
2) Qui n'ont pas fait l'objet d'un contrôle avec la thématique "LRAR".
Contradictoire puisque le 2 implique le 1.
S'il n'y a pas de contrôle pour un établissement, il n'y aura forcément pas de contrôle "LRAR".
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Selection selon champs d'une autre table

Message par pulcinopio »

Bien le bonjour à ces Messieurs,

Accepteriez-vous une remarque minuscule: c'est à dire: sans modifier la valeur NULL proposée par le champ, lorsque je faisais ma recherche (avec relations) je me limitais à noter > 0 ou <0 dans les critères du champ. (> plus grand que, < plus petit que).

Corrigez-moi si ma remarque n'est pas pertinente.

Merci pour m'aider à apprendre chaque jour quelque chose en plus.

Bien à vous
Libre Office 6.0.4 sur Ubuntu 18.04
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

Re: Selection selon champs d'une autre table

Message par martinterrier »

Contradictoire puisque le 2 implique le 1.
S'il n'y a pas de contrôle pour un établissement, il n'y aura forcément pas de contrôle "LRAR".

Dude, je pensais avoir été clair dès mon premier post, tout est dans la formulation il est vrai.

Je souhaites avoir une liste qui contient les établissements qui n'ont pas fait l'objet d'un contrôle, et, également, dans cette même liste, ceux qui ont fait l'objet d'un contrôle terrain mais pas encore un contrôle LRAR.

Une fois cette liste obtenue, je pourrai faire un contrôle LRAR à ces deux "publics": à terme, dans la base, chacun aura bien 1 controle LRAR. L'idée étant, par la requête, de ne pas sélectionner une seconde fois un établissement qui a déjà, par le passé, fait l'objet d'un contrôle LRAR.

J'espère être plus clair.

En fait, ma question est de comment faire un lien entre des contrôles et des établissements, et comment établir des listes d'établissement en fonction de la thématique de contrôles à réaliser.

Merci encore!
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10
HRk2o
Membre cOOnverti
Membre cOOnverti
Messages : 366
Inscription : 29 mai 2009 08:51
Localisation : Guyane

Re: Selection selon champs d'une autre table

Message par HRk2o »

en rajoutant dans la table 'CONTROLE' un nouveau champ "CTRL_OFF" booléen, à cocher pour les établissements où la tâche est accomplie, cela pourrait se faire:
Capture d’écran.png
@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Windows 10 sous AOO 4.1.16 et LibO 24.8.5.2
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Selection selon champs d'une autre table

Message par pulcinopio »

martinterrier a écrit : 22 sept. 2022 13:17

En fait, ma question est de comment faire un lien entre des contrôles et des établissements, et comment établir des listes d'établissement en fonction de la thématique de contrôles à réaliser.

Merci encore!
Veuillez excuser si je m'y suis mis. J'avoue avoir pensé que vous pouviez aussi considérer soit l'inclusion soit biffer ou exclure les objets qui ne répondaient pas à vos critères.

Comme vous pouvez le constater, plusieurs solutions s'offrent à vous....

:)
Libre Office 6.0.4 sur Ubuntu 18.04
Rafkus_pl
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 23 févr. 2022 11:45

Re: Selection selon champs d'une autre table

Message par Rafkus_pl »

Dans la requête "REQ_ETABLISSEMENT_SANS_CONTROLE", au lieu de la condition :

Code : Tout sélectionner

WHERE ( "T_THEMATIQUE_CONTROLE"."ID_THEMATIQUE_CONTROLE" != 3 OR "T_THEMATIQUE_CONTROLE"."ID_THEMATIQUE_CONTROLE" IS NULL )
entrez ce qui suit :

Code : Tout sélectionner

WHERE NOT "T_ETABLISSEMENT_1"."ID_ETABLISSEMENT" IN ( SELECT DISTINCT "T_CONTROLE"."ID_ETABLISSEMENT" FROM "T_CONTROLE" WHERE "ID_THEMATIQUE_CONTROLE" = 3 )
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.6, LibreOffice 7.1.6 - Widows 10
J'écris avec Google Translator, désolé pour l'orthographe...
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Selection selon champs d'une autre table

Message par pulcinopio »

Cher Monsieur, je me permets de revenir sur la question avec une proposition.

C'est à dire que, dans le but d'un résultat confaisant, j'aimerais que vos considériez le fichier en annexe (sans vouloir refaire le monde) et redimensionner le concept, aussi pour permettre aux membres du forum de mieux comprendre vos exigeances.

Bien à vous :)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office 6.0.4 sur Ubuntu 18.04
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Selection selon champs d'une autre table

Message par pulcinopio »

Est-ce je peux vous tutoyer?

Alors voilà l'échec qui t'a bloqué: tu ne voulais pas afficher l'objet non contrôlé.

Si tu considére les dates d'entretien effectuées, tu peux toujours dire que t'as pas pu mettre à jour lundi, mais que tu reviendras mardi p.e.

Par contre dans ton agenda hebdomadaire qui prépare ton futur, tu n'auras plus besoin de ce champ là. et tu peux donc éviter de l'afficher.
:D

La modération vous a écrit: :alerte: Merci de ne pas poster plusieurs messages à la suite, si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.
Image
En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.

Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office 6.0.4 sur Ubuntu 18.04
martinterrier
Membre OOrganisé
Membre OOrganisé
Messages : 97
Inscription : 21 avr. 2021 17:28

Re: Selection selon champs d'une autre table

Message par martinterrier »

Bonjour Rafkus_pl et bonjour pulpicino!


Rafkus_pl, merci beaucoup pour ta réponse que je viens de tester et surtout, de comprendre. Le travail était donc à faire au niveau de l'établissement et non des contrôles!

Le langage SQL est (comme tous les langages certainement), avant tout une affaire de logique et merci pour cette leçon qui me permet encore de progresser sur le sujet!!

Bon dimanche à tous et encore une fois, merci pour toutes ces contributions bénévoles!
Obligation de version :
Libre Office 7.1.8.1 (x64) sous Windows 10