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

Simuler l'opérateur "sauf"

12 réponses
Avatar
Moff
Bonjour. J'ai une table avec 2 colonnes : un nom de membre et le nom d'un
film visionné. Je cherche à obtenir la liste des films qu'un membre n'a pas
visionné. Dans cette table, j'ai ajouté un faux membre qui a visionné tous
les films. Pour identifier le membre, je me sers d'une variable publique. Je
n'ai pas réussi à trouver comment faire et ça fait longtemps que je cherche.
Merci beaucoup pour votre aide.

10 réponses

1 2
Avatar
Richard_35
Bonjour Moff,

As-tu une table des membres ?

Dis-nous,
Richard.

"Moff" a écrit dans le message de news:

Bonjour. J'ai une table avec 2 colonnes : un nom de membre et le nom d'un
film visionné. Je cherche à obtenir la liste des films qu'un membre n'a
pas
visionné. Dans cette table, j'ai ajouté un faux membre qui a visionné tous
les films. Pour identifier le membre, je me sers d'une variable publique.
Je
n'ai pas réussi à trouver comment faire et ça fait longtemps que je
cherche.
Merci beaucoup pour votre aide.


Avatar
Pierre CFI [mvp]
..../......
et une table film et une table association membre-film
si oui, voir req de non concordances
si non, revoir l'utilisation d'access :o))

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"Richard_35" a écrit dans le message de news:

Bonjour Moff,

As-tu une table des membres ?

Dis-nous,
Richard.

"Moff" a écrit dans le message de news:

Bonjour. J'ai une table avec 2 colonnes : un nom de membre et le nom d'un
film visionné. Je cherche à obtenir la liste des films qu'un membre n'a
pas
visionné. Dans cette table, j'ai ajouté un faux membre qui a visionné
tous
les films. Pour identifier le membre, je me sers d'une variable publique.
Je
n'ai pas réussi à trouver comment faire et ça fait longtemps que je
cherche.
Merci beaucoup pour votre aide.






Avatar
Moff
Oui j'ai une table des membres. J'ai même une table des films avec pour seul
champ le nom du film. J'ai réussi à faire ce que je veux à l'aide de 2
requêtes (une requête qui utilise l'autre) mais vu que je veux que la 1ère
requête varie selon le membre choisi (une variable globale), je ne peux pas
"hard coder" cette 1ère requête d'avance pour faire fonctionner ma 2e
requête. Je dois réussir à faire fonctionner le tout en 1 seule requête. J'ai
aussi essayé 2 requêtes imbriquées mais ça n'a pas fonctionné. Je travaille
avec un projet et le serveur SQL de MSDE.


Bonjour Moff,

As-tu une table des membres ?

Dis-nous,
Richard.

"Moff" a écrit dans le message de news:

Bonjour. J'ai une table avec 2 colonnes : un nom de membre et le nom d'un
film visionné. Je cherche à obtenir la liste des films qu'un membre n'a
pas
visionné. Dans cette table, j'ai ajouté un faux membre qui a visionné tous
les films. Pour identifier le membre, je me sers d'une variable publique.
Je
n'ai pas réussi à trouver comment faire et ça fait longtemps que je
cherche.
Merci beaucoup pour votre aide.







Avatar
Moff
J'ai une table video avec le champ video_nom et j'ai une table membre avec
comme clé principale les champs membre_nom_membre et membre_nom_video. J'ai
aussi une table membre avec le champ membre_nom. Le tout en concordance avec
la 3e forme normale.


...../......
et une table film et une table association membre-film
si oui, voir req de non concordances
si non, revoir l'utilisation d'access :o))

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"Richard_35" a écrit dans le message de news:

Bonjour Moff,

As-tu une table des membres ?

Dis-nous,
Richard.

"Moff" a écrit dans le message de news:

Bonjour. J'ai une table avec 2 colonnes : un nom de membre et le nom d'un
film visionné. Je cherche à obtenir la liste des films qu'un membre n'a
pas
visionné. Dans cette table, j'ai ajouté un faux membre qui a visionné
tous
les films. Pour identifier le membre, je me sers d'une variable publique.
Je
n'ai pas réussi à trouver comment faire et ça fait longtemps que je
cherche.
Merci beaucoup pour votre aide.











Avatar
Moff
Excusez j'ai mal nommé ma table intermediaire. J'ai une table prets avec
comme clé principale les champs prets_nom_membre et prets_nom_video.


J'ai une table video avec le champ video_nom et j'ai une table membre avec
comme clé principale les champs membre_nom_membre et membre_nom_video. J'ai
aussi une table membre avec le champ membre_nom. Le tout en concordance avec
la 3e forme normale.


...../......
et une table film et une table association membre-film
si oui, voir req de non concordances
si non, revoir l'utilisation d'access :o))

--
Pierre
MVP Access
***************************************
Conseils MPFA: http://www.mpfa.info/
*********************************************************
"Richard_35" a écrit dans le message de news:

Bonjour Moff,

As-tu une table des membres ?

Dis-nous,
Richard.

"Moff" a écrit dans le message de news:

Bonjour. J'ai une table avec 2 colonnes : un nom de membre et le nom d'un
film visionné. Je cherche à obtenir la liste des films qu'un membre n'a
pas
visionné. Dans cette table, j'ai ajouté un faux membre qui a visionné
tous
les films. Pour identifier le membre, je me sers d'une variable publique.
Je
n'ai pas réussi à trouver comment faire et ça fait longtemps que je
cherche.
Merci beaucoup pour votre aide.













Avatar
Richard_35
Donc, revenons à ta demande initiale : tu veux connaître les membres qui
n'ont pas visionné de film.

Ta liste de table devrait être la suivante, si j'ai bien compris :
- Table des membres : Id_membre (clé primaire) , nom , prénom,
etc...
M1
M2
M3
- Table des films : Nom_film (en aparté, c'est une très mauvaise
idée de se servir du titre du film pour clé primaire !)
F1
F2
F3
- Table des films visionnés par des membres : Id_membre, Nom_film
(la présence d'un couple implique que le membre a visionné le film)
M2 F1

Effectivement, c'est plus compliqué qu'il n'y paraît au premier abord...
Il faudrait créer une table des couples "Membre/Film_possibles" et la
remplir par du code (je ne connais pas VBA, mais pas de problème pour les
MVP en ligne !) :
1- lecture enregistrement de la table "Membres" jusqu'à EOF.
2- lecture enregistrement de la table "Films" jusqu'à EOF.
- écriture du couple Id_Membre / Nom_Film
- suivant 2
- suivant 1
Après traitement, cette table contiendra les enregistrements suivants :
M1 F1
M1 F2
M1 F3
M2 F1
M2 F2
M2 F3
M3 F1
M3 F2
M3 F3

Ensuite, il faut créer une requête avec, en primaire la table
"Membre/Film_possibles" liée à la table "films visionnés par des membres"
via Nom_Film et ne sélectionner QUE les enregistrements dont le champ
"Nom_Film" de "films visionnés par des membres" = Null (ce qui correspond à
une requête de non correspondance). Le résultat te donne donc les couples
Membre/Film non existants dans la table "films visionnés par des membres",
ce que tu voulais au départ... sauf erreur de ma part...

Dis-nous.
Bon courage,
Richard.


"Moff" a écrit dans le message de news:

Oui j'ai une table des membres. J'ai même une table des films avec pour
seul
champ le nom du film. J'ai réussi à faire ce que je veux à l'aide de 2
requêtes (une requête qui utilise l'autre) mais vu que je veux que la 1ère
requête varie selon le membre choisi (une variable globale), je ne peux
pas
"hard coder" cette 1ère requête d'avance pour faire fonctionner ma 2e
requête. Je dois réussir à faire fonctionner le tout en 1 seule requête.
J'ai
aussi essayé 2 requêtes imbriquées mais ça n'a pas fonctionné. Je
travaille
avec un projet et le serveur SQL de MSDE.


Bonjour Moff,

As-tu une table des membres ?

Dis-nous,
Richard.

"Moff" a écrit dans le message de news:

Bonjour. J'ai une table avec 2 colonnes : un nom de membre et le nom
d'un
film visionné. Je cherche à obtenir la liste des films qu'un membre n'a
pas
visionné. Dans cette table, j'ai ajouté un faux membre qui a visionné
tous
les films. Pour identifier le membre, je me sers d'une variable
publique.
Je
n'ai pas réussi à trouver comment faire et ça fait longtemps que je
cherche.
Merci beaucoup pour votre aide.









Avatar
Moff
Merci pour ta réponse. Plus précisément, je cherche à obtenir la liste des
films qu'un membre n'a pas visionnés.


Donc, revenons à ta demande initiale : tu veux connaître les membres qui
n'ont pas visionné de film.

Ta liste de table devrait être la suivante, si j'ai bien compris :
- Table des membres : Id_membre (clé primaire) , nom , prénom,
etc...
M1
M2
M3
- Table des films : Nom_film (en aparté, c'est une très mauvaise
idée de se servir du titre du film pour clé primaire !)
F1
F2
F3
- Table des films visionnés par des membres : Id_membre, Nom_film
(la présence d'un couple implique que le membre a visionné le film)
M2 F1

Effectivement, c'est plus compliqué qu'il n'y paraît au premier abord...
Il faudrait créer une table des couples "Membre/Film_possibles" et la
remplir par du code (je ne connais pas VBA, mais pas de problème pour les
MVP en ligne !) :
1- lecture enregistrement de la table "Membres" jusqu'à EOF.
2- lecture enregistrement de la table "Films" jusqu'à EOF.
- écriture du couple Id_Membre / Nom_Film
- suivant 2
- suivant 1
Après traitement, cette table contiendra les enregistrements suivants :
M1 F1
M1 F2
M1 F3
M2 F1
M2 F2
M2 F3
M3 F1
M3 F2
M3 F3

Ensuite, il faut créer une requête avec, en primaire la table
"Membre/Film_possibles" liée à la table "films visionnés par des membres"
via Nom_Film et ne sélectionner QUE les enregistrements dont le champ
"Nom_Film" de "films visionnés par des membres" = Null (ce qui correspond à
une requête de non correspondance). Le résultat te donne donc les couples
Membre/Film non existants dans la table "films visionnés par des membres",
ce que tu voulais au départ... sauf erreur de ma part...

Dis-nous.
Bon courage,
Richard.


"Moff" a écrit dans le message de news:

Oui j'ai une table des membres. J'ai même une table des films avec pour
seul
champ le nom du film. J'ai réussi à faire ce que je veux à l'aide de 2
requêtes (une requête qui utilise l'autre) mais vu que je veux que la 1ère
requête varie selon le membre choisi (une variable globale), je ne peux
pas
"hard coder" cette 1ère requête d'avance pour faire fonctionner ma 2e
requête. Je dois réussir à faire fonctionner le tout en 1 seule requête.
J'ai
aussi essayé 2 requêtes imbriquées mais ça n'a pas fonctionné. Je
travaille
avec un projet et le serveur SQL de MSDE.


Bonjour Moff,

As-tu une table des membres ?

Dis-nous,
Richard.

"Moff" a écrit dans le message de news:

Bonjour. J'ai une table avec 2 colonnes : un nom de membre et le nom
d'un
film visionné. Je cherche à obtenir la liste des films qu'un membre n'a
pas
visionné. Dans cette table, j'ai ajouté un faux membre qui a visionné
tous
les films. Pour identifier le membre, je me sers d'une variable
publique.
Je
n'ai pas réussi à trouver comment faire et ça fait longtemps que je
cherche.
Merci beaucoup pour votre aide.














Avatar
Moff
Merci Richard_35. Ma solution ressemble à ça sauf que pour éviter de coder
tous les
visionnements possibles, j'ai introduit à chaque ajout d'un nouveau film un
membre bidon "disons qu'il s'appelle zyz" qui, lui, a vu tous les films dans
la table.

Ma 1ère idée était de filtrer tous les films vus par un membre précis en
ajoutant les films vu par le membre zyz (qui les a tous vus). J'obtiens la
liste des films vus par le membre précis et par zyz. Il me reste à éliminer
les films qui ont été vus par les 2 membres donc (count = 2) et j'obtiens les
films que le membre précis n'a pas vu. Cela fonctionne très bien avec 2 vues
mais je dois alors créer la première vue pour chaque membre, ce qui n'a pas
d'allure.

C'est l'opération de non concordance que je ne suis pas du tout capable
d'effectuer.
Avatar
Richard_35
Eh bien,
"Le résultat te donne donc les couples Membre/Film non existants dans la
table "films visionnés par des membres""
cela veut dire
"la liste des films qu'un membre n'a pas visionnés".

En effet, cette liste (la finale) sera donc la suivante, suivant mon
exemple :
M1 F1
M1 F2
M1 F3
M2 F1 M2 F1
M2 F2
M2 F3
M3 F1
M3 F2
M3 F3

Donc, en français :
- le membre M1 n'a pas vu les films F1, F2 et F3.
- le membre M2 n'a pas vu les films F2 et F3.
- le membre M3 n'a pas vu les films F1, F2 et F3.

Dis-nous.
Richard.

"Moff" a écrit dans le message de news:

Merci pour ta réponse. Plus précisément, je cherche à obtenir la liste des
films qu'un membre n'a pas visionnés.


Donc, revenons à ta demande initiale : tu veux connaître les membres
qui
n'ont pas visionné de film.

Ta liste de table devrait être la suivante, si j'ai bien compris :
- Table des membres : Id_membre (clé primaire) , nom , prénom,
etc...
M1
M2
M3
- Table des films : Nom_film (en aparté, c'est une très mauvaise
idée de se servir du titre du film pour clé primaire !)
F1
F2
F3
- Table des films visionnés par des membres : Id_membre, Nom_film
(la présence d'un couple implique que le membre a visionné le film)
M2 F1

Effectivement, c'est plus compliqué qu'il n'y paraît au premier
abord...
Il faudrait créer une table des couples "Membre/Film_possibles" et la
remplir par du code (je ne connais pas VBA, mais pas de problème pour les
MVP en ligne !) :
1- lecture enregistrement de la table "Membres" jusqu'à EOF.
2- lecture enregistrement de la table "Films" jusqu'à EOF.
- écriture du couple Id_Membre / Nom_Film
- suivant 2
- suivant 1
Après traitement, cette table contiendra les enregistrements suivants
:
M1 F1
M1 F2
M1 F3
M2 F1
M2 F2
M2 F3
M3 F1
M3 F2
M3 F3

Ensuite, il faut créer une requête avec, en primaire la table
"Membre/Film_possibles" liée à la table "films visionnés par des membres"
via Nom_Film et ne sélectionner QUE les enregistrements dont le champ
"Nom_Film" de "films visionnés par des membres" = Null (ce qui correspond
à
une requête de non correspondance). Le résultat te donne donc les couples
Membre/Film non existants dans la table "films visionnés par des
membres",
ce que tu voulais au départ... sauf erreur de ma part...

Dis-nous.
Bon courage,
Richard.


"Moff" a écrit dans le message de news:

Oui j'ai une table des membres. J'ai même une table des films avec pour
seul
champ le nom du film. J'ai réussi à faire ce que je veux à l'aide de 2
requêtes (une requête qui utilise l'autre) mais vu que je veux que la
1ère
requête varie selon le membre choisi (une variable globale), je ne peux
pas
"hard coder" cette 1ère requête d'avance pour faire fonctionner ma 2e
requête. Je dois réussir à faire fonctionner le tout en 1 seule
requête.
J'ai
aussi essayé 2 requêtes imbriquées mais ça n'a pas fonctionné. Je
travaille
avec un projet et le serveur SQL de MSDE.


Bonjour Moff,

As-tu une table des membres ?

Dis-nous,
Richard.

"Moff" a écrit dans le message de
news:

Bonjour. J'ai une table avec 2 colonnes : un nom de membre et le nom
d'un
film visionné. Je cherche à obtenir la liste des films qu'un membre
n'a
pas
visionné. Dans cette table, j'ai ajouté un faux membre qui a
visionné
tous
les films. Pour identifier le membre, je me sers d'une variable
publique.
Je
n'ai pas réussi à trouver comment faire et ça fait longtemps que je
cherche.
Merci beaucoup pour votre aide.
















Avatar
Richard_35
L'opération de non concordance consiste à tester les valeurs nulles
(Null) du champ clé de liaison.
Créer "la première vue pour chaque membre" consiste à établir la liste
des couples Membre/Film possibles !
En outre, la création d'enregistrement "bidon" n'est pas très élégante
non plus, enfin je trouve.
Avec la création des couples possibles et la requête de non concordance,
le traitement est dynamique.

Y-a-t-il un MVP qui puisse écrire ce petit bout de code en VBA ?
1- lecture enregistrement de la table "Membres" jusqu'à EOF.
2- lecture enregistrement de la table "Films" jusqu'à EOF.
- écriture du couple Id_Membre / Nom_Film dans la table
- next 2
- next 1
Merci d'avance.

Dis-nous,
Richard.

"Moff" a écrit dans le message de news:

Merci Richard_35. Ma solution ressemble à ça sauf que pour éviter de coder
tous les
visionnements possibles, j'ai introduit à chaque ajout d'un nouveau film
un
membre bidon "disons qu'il s'appelle zyz" qui, lui, a vu tous les films
dans
la table.

Ma 1ère idée était de filtrer tous les films vus par un membre précis en
ajoutant les films vu par le membre zyz (qui les a tous vus). J'obtiens la
liste des films vus par le membre précis et par zyz. Il me reste à
éliminer
les films qui ont été vus par les 2 membres donc (count = 2) et j'obtiens
les
films que le membre précis n'a pas vu. Cela fonctionne très bien avec 2
vues
mais je dois alors créer la première vue pour chaque membre, ce qui n'a
pas
d'allure.

C'est l'opération de non concordance que je ne suis pas du tout capable
d'effectuer.




1 2