OVH Cloud OVH Cloud

Interroger une table liée ?

12 réponses
Avatar
=B-\)=
Bonjour
Ceal fait pas mal de temps que je cherche la réponse sur le net mais comme
je ne suis pas très "calé" elle m'est sans doute passée au-dessus...
J'ai une base access des films que j'ai vus
Une table principale avec une fiche par film, un champ Index comme clé
primaire avec Numauto (et des autres champs : titre, année, résumé...)
Une table secondaire "Acteurs" avec un champ ID_film qui reprend la
référence du film et une ligne par acteur jouant dans le film. Les deux
tables sont liées avec une liaison un a plusieurs de manière à pouvoir
associer plusieurs acteurs à un film (la table acteurs contient donc une
ligne avec le N° d'identification du film et le nom de l'acteur jouant
dedans; si plusieurs acteurs jouents dans le même film, on a autant de
lignes que d'acteurs -avec leurs noms- et le même n° de film)
L'affichage se fait dans un formulaire principal pour le films et un sous
formulaire pour faire apparaître les noms des acteurs participant au film.
Pas de problème de ce côté
Mon problème est le suivant :
Je souhaite créer une requête qui m'affiche les fiches de films où jouent
ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER
Je pense qu'il faut porter l'interrogation sur la table des acteurs, mais
j'avoue qu'après je sèche...
Quelqu'un peut-il m'aider ? Merci d'avance
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour

(la table acteurs contient donc une ligne avec le N° d'identification du
film et le nom de l'acteur jouant dedans; si plusieurs acteurs jouents dans
le même film, on a autant de lignes que d'acteurs -avec leurs noms- et le
même n° de film)


soit il y a une erreur dans les noms ,soit une erreur dans la conception des
tables.

la table acteurs ne contient pas les références à un film mais seulement les
coordonnées de l'acteur.
la table film contient le numéro de l'acteur en clé externe pour pouvoir
faire la relation entre le film et l'acteur (1:n)
lorsque tu veux la liste des films pour deux acteurs , tu fais une requête
sur les acteurs et les films et tu mets une clause where sur le nom de la
table acteur, par exemple:
WHERE (((Acteurs.Lenom)="depardieu")) OR (((Acteurs.Lenom)="clavier"));

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"=B-)=" a écrit dans le message de news:

Bonjour
Ceal fait pas mal de temps que je cherche la réponse sur le net mais comme
je ne suis pas très "calé" elle m'est sans doute passée au-dessus...
J'ai une base access des films que j'ai vus
Une table principale avec une fiche par film, un champ Index comme clé
primaire avec Numauto (et des autres champs : titre, année, résumé...)
Une table secondaire "Acteurs" avec un champ ID_film qui reprend la
référence du film et une ligne par acteur jouant dans le film. Les deux
tables sont liées avec une liaison un a plusieurs de manière à pouvoir
associer plusieurs acteurs à un film (la table acteurs contient donc une
ligne avec le N° d'identification du film et le nom de l'acteur jouant
dedans; si plusieurs acteurs jouents dans le même film, on a autant de
lignes que d'acteurs -avec leurs noms- et le même n° de film)
L'affichage se fait dans un formulaire principal pour le films et un sous
formulaire pour faire apparaître les noms des acteurs participant au film.
Pas de problème de ce côté
Mon problème est le suivant :
Je souhaite créer une requête qui m'affiche les fiches de films où jouent
ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER
Je pense qu'il faut porter l'interrogation sur la table des acteurs, mais
j'avoue qu'après je sèche...
Quelqu'un peut-il m'aider ? Merci d'avance
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W



Avatar
Pierre CFI [mvp]
bonjour
dans ta req tu mets les 2 tables
avec le champ nom du film et nom acteur par exemple
dans le critére du nom acteur
In("depardieu";"delon")
ou pour demander les noms
In([Nom de premier acteur];[nom du deuxiéme acteur])

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"=B-)=" a écrit dans le message de news:
Bonjour
Ceal fait pas mal de temps que je cherche la réponse sur le net mais comme
je ne suis pas très "calé" elle m'est sans doute passée au-dessus...
J'ai une base access des films que j'ai vus
Une table principale avec une fiche par film, un champ Index comme clé
primaire avec Numauto (et des autres champs : titre, année, résumé...)
Une table secondaire "Acteurs" avec un champ ID_film qui reprend la
référence du film et une ligne par acteur jouant dans le film. Les deux
tables sont liées avec une liaison un a plusieurs de manière à pouvoir
associer plusieurs acteurs à un film (la table acteurs contient donc une
ligne avec le N° d'identification du film et le nom de l'acteur jouant
dedans; si plusieurs acteurs jouents dans le même film, on a autant de
lignes que d'acteurs -avec leurs noms- et le même n° de film)
L'affichage se fait dans un formulaire principal pour le films et un sous
formulaire pour faire apparaître les noms des acteurs participant au film.
Pas de problème de ce côté
Mon problème est le suivant :
Je souhaite créer une requête qui m'affiche les fiches de films où jouent
ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER
Je pense qu'il faut porter l'interrogation sur la table des acteurs, mais
j'avoue qu'après je sèche...
Quelqu'un peut-il m'aider ? Merci d'avance
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W




Avatar
Marc-Antoine
"=B-)=" a écrit dans le message de news:

Bonjour
Ceal fait pas mal de temps que je cherche la réponse sur le net mais
comme je ne suis pas très "calé" elle m'est sans doute passée
au-dessus...
J'ai une base access des films que j'ai vus
Une table principale avec une fiche par film, un champ Index comme clé
primaire avec Numauto (et des autres champs : titre, année, résumé...)
Une table secondaire "Acteurs" avec un champ ID_film qui reprend la
référence du film et une ligne par acteur jouant dans le film. Les
deux tables sont liées avec une liaison un a plusieurs de manière à
pouvoir associer plusieurs acteurs à un film (la table acteurs
contient donc une ligne avec le N° d'identification du film et le nom
de l'acteur jouant dedans; si plusieurs acteurs jouents dans le même
film, on a autant de lignes que d'acteurs -avec leurs noms- et le même
n° de film)
L'affichage se fait dans un formulaire principal pour le films et un
sous formulaire pour faire apparaître les noms des acteurs participant
au film. Pas de problème de ce côté
Mon problème est le suivant :
Je souhaite créer une requête qui m'affiche les fiches de films où
jouent ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER
Je pense qu'il faut porter l'interrogation sur la table des acteurs,
mais j'avoue qu'après je sèche...
Quelqu'un peut-il m'aider ? Merci d'avance
Philippe

Bonjour,

Si j'ai bien compris ta question, il faudrait faire une requête
paramétrable faisant ressortir entre autre les champs [Titre du film] et
[Nom acteur] sous le champ [Nom acteur] le critère paramétrable, c'est a
dire des crochets [] à l'intérieur desquels tu peux mettre un message
(mais ce n'est pas obligatoire). Par exemple [Nom du 1er acteur] OU [Nom
du 2ème acteur]. (Attention il s'agit de l'expressions logique "OU" qui
sépare les "2 questions")
J'espère que cela te conviendra.

Avatar
=B-\)=
J'ai utilisé les instructions dispensées dans le cours
http://www.info-3000.com/access/cours/lecon56/lecon56.php
(et leçons suivantes)
Ta solution ne permet pas d'associer plusieurs acteurs à une seule fiche de
film (enfin, je crois...)
Car il s'agit d'un fichier des films et non pas d'un fichier des acteurs...
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W
"Raymond [mvp]" a écrit dans le message de
news:
Bonjour

(la table acteurs contient donc une ligne avec le N° d'identification du
film et le nom de l'acteur jouant dedans; si plusieurs acteurs jouent dans
le même film, on a autant de lignes que d'acteurs -avec leurs noms- et le
même n° de film)


soit il y a une erreur dans les noms ,soit une erreur dans la conception
des tables.

la table acteurs ne contient pas les références à un film mais seulement
les coordonnées de l'acteur.
la table film contient le numéro de l'acteur en clé externe pour pouvoir
faire la relation entre le film et l'acteur (1:n)
lorsque tu veux la liste des films pour deux acteurs , tu fais une requête
sur les acteurs et les films et tu mets une clause where sur le nom de la
table acteur, par exemple:
WHERE (((Acteurs.Lenom)="depardieu")) OR (((Acteurs.Lenom)="clavier"));

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"=B-)=" a écrit dans le message de news:

Bonjour
Ceal fait pas mal de temps que je cherche la réponse sur le net mais
comme je ne suis pas très "calé" elle m'est sans doute passée
au-dessus...
J'ai une base access des films que j'ai vus
Une table principale avec une fiche par film, un champ Index comme clé
primaire avec Numauto (et des autres champs : titre, année, résumé...)
Une table secondaire "Acteurs" avec un champ ID_film qui reprend la
référence du film et une ligne par acteur jouant dans le film. Les deux
tables sont liées avec une liaison un a plusieurs de manière à pouvoir
associer plusieurs acteurs à un film (la table acteurs contient donc une
ligne avec le N° d'identification du film et le nom de l'acteur jouant
dedans; si plusieurs acteurs jouents dans le même film, on a autant de
lignes que d'acteurs -avec leurs noms- et le même n° de film)
L'affichage se fait dans un formulaire principal pour le films et un sous
formulaire pour faire apparaître les noms des acteurs participant au
film. Pas de problème de ce côté
Mon problème est le suivant :
Je souhaite créer une requête qui m'affiche les fiches de films où jouent
ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER
Je pense qu'il faut porter l'interrogation sur la table des acteurs, mais
j'avoue qu'après je sèche...
Quelqu'un peut-il m'aider ? Merci d'avance
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W







Avatar
Raymond [mvp]
il faut normalement une table intermédiaire avec clé film et clé acteur. ce
qui permet de mettre en relation plusieurs films pour un acteur et plusieurs
acteurs pour un film.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"=B-)=" a écrit dans le message de news:

J'ai utilisé les instructions dispensées dans le cours
http://www.info-3000.com/access/cours/lecon56/lecon56.php
(et leçons suivantes)
Ta solution ne permet pas d'associer plusieurs acteurs à une seule fiche
de film (enfin, je crois...)
Car il s'agit d'un fichier des films et non pas d'un fichier des
acteurs...
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W
"Raymond [mvp]" a écrit dans le message
de news:
Bonjour

(la table acteurs contient donc une ligne avec le N° d'identification du
film et le nom de l'acteur jouant dedans; si plusieurs acteurs jouent
dans le même film, on a autant de lignes que d'acteurs -avec leurs noms-
et le même n° de film)


soit il y a une erreur dans les noms ,soit une erreur dans la conception
des tables.

la table acteurs ne contient pas les références à un film mais seulement
les coordonnées de l'acteur.
la table film contient le numéro de l'acteur en clé externe pour pouvoir
faire la relation entre le film et l'acteur (1:n)
lorsque tu veux la liste des films pour deux acteurs , tu fais une
requête sur les acteurs et les films et tu mets une clause where sur le
nom de la table acteur, par exemple:
WHERE (((Acteurs.Lenom)="depardieu")) OR (((Acteurs.Lenom)="clavier"));

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"=B-)=" a écrit dans le message de news:

Bonjour
Ceal fait pas mal de temps que je cherche la réponse sur le net mais
comme je ne suis pas très "calé" elle m'est sans doute passée
au-dessus...
J'ai une base access des films que j'ai vus
Une table principale avec une fiche par film, un champ Index comme clé
primaire avec Numauto (et des autres champs : titre, année, résumé...)
Une table secondaire "Acteurs" avec un champ ID_film qui reprend la
référence du film et une ligne par acteur jouant dans le film. Les deux
tables sont liées avec une liaison un a plusieurs de manière à pouvoir
associer plusieurs acteurs à un film (la table acteurs contient donc une
ligne avec le N° d'identification du film et le nom de l'acteur jouant
dedans; si plusieurs acteurs jouents dans le même film, on a autant de
lignes que d'acteurs -avec leurs noms- et le même n° de film)
L'affichage se fait dans un formulaire principal pour le films et un
sous formulaire pour faire apparaître les noms des acteurs participant
au film. Pas de problème de ce côté
Mon problème est le suivant :
Je souhaite créer une requête qui m'affiche les fiches de films où
jouent ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER
Je pense qu'il faut porter l'interrogation sur la table des acteurs,
mais j'avoue qu'après je sèche...
Quelqu'un peut-il m'aider ? Merci d'avance
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W











Avatar
Pierre CFI [mvp]
hum
il faut 3 tables
film
acteur
tourner (avec idfilm et idacteur) ces 2 cles formant la clé primaire

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"=B-)=" a écrit dans le message de news:
J'ai utilisé les instructions dispensées dans le cours
http://www.info-3000.com/access/cours/lecon56/lecon56.php
(et leçons suivantes)
Ta solution ne permet pas d'associer plusieurs acteurs à une seule fiche de
film (enfin, je crois...)
Car il s'agit d'un fichier des films et non pas d'un fichier des acteurs...
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W
"Raymond [mvp]" a écrit dans le message de
news:
Bonjour

(la table acteurs contient donc une ligne avec le N° d'identification du
film et le nom de l'acteur jouant dedans; si plusieurs acteurs jouent dans
le même film, on a autant de lignes que d'acteurs -avec leurs noms- et le
même n° de film)


soit il y a une erreur dans les noms ,soit une erreur dans la conception
des tables.

la table acteurs ne contient pas les références à un film mais seulement
les coordonnées de l'acteur.
la table film contient le numéro de l'acteur en clé externe pour pouvoir
faire la relation entre le film et l'acteur (1:n)
lorsque tu veux la liste des films pour deux acteurs , tu fais une requête
sur les acteurs et les films et tu mets une clause where sur le nom de la
table acteur, par exemple:
WHERE (((Acteurs.Lenom)="depardieu")) OR (((Acteurs.Lenom)="clavier"));

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"=B-)=" a écrit dans le message de news:

Bonjour
Ceal fait pas mal de temps que je cherche la réponse sur le net mais
comme je ne suis pas très "calé" elle m'est sans doute passée
au-dessus...
J'ai une base access des films que j'ai vus
Une table principale avec une fiche par film, un champ Index comme clé
primaire avec Numauto (et des autres champs : titre, année, résumé...)
Une table secondaire "Acteurs" avec un champ ID_film qui reprend la
référence du film et une ligne par acteur jouant dans le film. Les deux
tables sont liées avec une liaison un a plusieurs de manière à pouvoir
associer plusieurs acteurs à un film (la table acteurs contient donc une
ligne avec le N° d'identification du film et le nom de l'acteur jouant
dedans; si plusieurs acteurs jouents dans le même film, on a autant de
lignes que d'acteurs -avec leurs noms- et le même n° de film)
L'affichage se fait dans un formulaire principal pour le films et un sous
formulaire pour faire apparaître les noms des acteurs participant au
film. Pas de problème de ce côté
Mon problème est le suivant :
Je souhaite créer une requête qui m'affiche les fiches de films où jouent
ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER
Je pense qu'il faut porter l'interrogation sur la table des acteurs, mais
j'avoue qu'après je sèche...
Quelqu'un peut-il m'aider ? Merci d'avance
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W











Avatar
=B-\)=
C'est un peu ce que j'ai fait mais je ne peux pas mettre 2 noms d'acteur sur
la même ligne de critère (sauf avec un "ou") puis que chaque enregistrement
de la table acteurs ne contient qu'un acteur
C'est là que je bloque...
Si je mets un critère "ou", toutes les fiches concernées sortent mais aussi
celles où il n'y a qu'un des deux acteurs. Il faudrait pouvoir restreindre
le champ ID_film au fiches semblables ? Ou je suis en train de me planter
monumentalement....
Il n'y aurait pas un site avec une base exemple de cet type ?
Merci
Philippe


--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W
"Pierre CFI [mvp]" a écrit dans le message de
news:
bonjour
dans ta req tu mets les 2 tables
avec le champ nom du film et nom acteur par exemple
dans le critére du nom acteur
In("depardieu";"delon")
ou pour demander les noms
In([Nom de premier acteur];[nom du deuxiéme acteur])

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"=B-)=" a écrit dans le message de
news:
Bonjour
Ceal fait pas mal de temps que je cherche la réponse sur le net mais
comme
je ne suis pas très "calé" elle m'est sans doute passée au-dessus...
J'ai une base access des films que j'ai vus
Une table principale avec une fiche par film, un champ Index comme clé
primaire avec Numauto (et des autres champs : titre, année, résumé...)
Une table secondaire "Acteurs" avec un champ ID_film qui reprend la
référence du film et une ligne par acteur jouant dans le film. Les deux
tables sont liées avec une liaison un a plusieurs de manière à pouvoir
associer plusieurs acteurs à un film (la table acteurs contient donc une
ligne avec le N° d'identification du film et le nom de l'acteur jouant
dedans; si plusieurs acteurs jouents dans le même film, on a autant de
lignes que d'acteurs -avec leurs noms- et le même n° de film)
L'affichage se fait dans un formulaire principal pour le films et un sous
formulaire pour faire apparaître les noms des acteurs participant au
film.
Pas de problème de ce côté
Mon problème est le suivant :
Je souhaite créer une requête qui m'affiche les fiches de films où jouent
ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER
Je pense qu'il faut porter l'interrogation sur la table des acteurs, mais
j'avoue qu'après je sèche...
Quelqu'un peut-il m'aider ? Merci d'avance
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W








Avatar
Jacques Caron
Salut,

On Mon, 28 Mar 2005 16:35:33 +0200, =B-)=
wrote:

Je souhaite créer une requête qui m'affiche les fiches de films où jouent
ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER


SELECT f.* FROM film f,acteur a,acteur b WHERE a.film=f.id AND
a.acteur='DEPARDIEU' AND b.film=f.id AND b.acteur='CLAVIER';

A adapter en fonction des spécificités de ta base de données.

Au passage, il est probablement plus intelligent d'avoir une table des
films, une table des acteurs, et une table des correspondances (ID film,ID
acteur).

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/

Avatar
=B-\)=
Suite à vos bons conseils j'ai modifié ma base pour avoir :
1. une table films
2. une table acteurs
3. une atble intermédiaire qui reprend à la fois les codes films et les
codes acteurs
J'ai établi un formulaire avec un sous-formulaire t cela fontionne.
Mais je me retrouve devant le même obstable pour rédiger ma requête
Jacque CARON a suggéré une rédaction du style

SELECT f.* FROM film f,acteur a,acteur b WHERE a.film=f.id AND
a.acteur='DEPARDIEU' AND b.film=f.id AND b.acteur='CLAVIER';

mais je pense que c'était basé sur mon ancienne architecture. De plus, c'est
en langage SQL
Ne peut-on rédiger la requête par le biais du formulaire de création ?
D'avance merci à tous
--

"=B-)=" a écrit dans le message de news:

Bonjour
Ceal fait pas mal de temps que je cherche la réponse sur le net mais comme
je ne suis pas très "calé" elle m'est sans doute passée au-dessus...
J'ai une base access des films que j'ai vus
Une table principale avec une fiche par film, un champ Index comme clé
primaire avec Numauto (et des autres champs : titre, année, résumé...)
Une table secondaire "Acteurs" avec un champ ID_film qui reprend la
référence du film et une ligne par acteur jouant dans le film. Les deux
tables sont liées avec une liaison un a plusieurs de manière à pouvoir
associer plusieurs acteurs à un film (la table acteurs contient donc une
ligne avec le N° d'identification du film et le nom de l'acteur jouant
dedans; si plusieurs acteurs jouents dans le même film, on a autant de
lignes que d'acteurs -avec leurs noms- et le même n° de film)
L'affichage se fait dans un formulaire principal pour le films et un sous
formulaire pour faire apparaître les noms des acteurs participant au film.
Pas de problème de ce côté
Mon problème est le suivant :
Je souhaite créer une requête qui m'affiche les fiches de films où jouent
ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER
Je pense qu'il faut porter l'interrogation sur la table des acteurs, mais
j'avoue qu'après je sèche...
Quelqu'un peut-il m'aider ? Merci d'avance
Philippe

--
Adresse anti-spam
Pour m'écrire utilisez l'adresse ci-dessous
http://cerbermail.com/?m351uq4P6W



Avatar
Fred Brouard - SQLpro
Voici un modèle d'une telle base avec des données et la solution à ton problème :

CREATE TABLE T_REALISATEUR_RLT
(RLT_ID INTEGER NOT NULL PRIMARY KEY,
RLT_NOM VARCHAR(20))

CREATE TABLE T_ACTEUR_ACT
(ACT_ID INTEGER NOT NULL PRIMARY KEY,
ACT_NOM VARCHAR(20),
ACT_PRENOM VARCHAR(16),
ACT_PAYS VARCHAR(16))


CREATE TABLE T_FILM_FLM
(FLM_ID INTEGER NOT NULL PRIMARY KEY,
RLT_ID INTEGER NOT NULL FOREIGN KEY
REFERENCES T_REALISATEUR_RLT(RLT_ID),
FLM_TITRE VARCHAR(64),
FLM_ANNEE SMALLINT,
FLM_PAYS VARCHAR(16))

CREATE TABLE T_JOUE_JOU
(FLM_ID INTEGER NOT NULL FOREIGN KEY
REFERENCES T_FILM_FLM (FLM_ID),
ACT_ID INTEGER NOT NULL FOREIGN KEY
REFERENCES T_ACTEUR_ACT (ACT_ID),
CONSTRAINT PK_JOU PRIMARY KEY (ACT_ID, FLM_ID))


INSERT INTO T_REALISATEUR_RLT VALUES (1, 'HITCHCOCK')
INSERT INTO T_REALISATEUR_RLT VALUES (2, 'KUBRICK')
INSERT INTO T_REALISATEUR_RLT VALUES (3, 'CHABROL')

INSERT INTO T_FILM_FLM VALUES
(1, 1, 'Fenêtre sur cour', 1954, 'USA')
INSERT INTO T_FILM_FLM VALUES
(2, 1, 'Vertigo', 1958, 'USA')
INSERT INTO T_FILM_FLM VALUES
(3, 1, 'L''homme qui en savait trop', 1956, 'USA')
INSERT INTO T_FILM_FLM VALUES
(4, 1, 'La corde', 1948, 'USA')
INSERT INTO T_FILM_FLM VALUES
(5, 2, 'Spartacus', 1960, 'USA')
INSERT INTO T_FILM_FLM VALUES
(6, 2, 'Lolita', 1962, 'USA')
INSERT INTO T_FILM_FLM VALUES
(7, 2, 'Dr Folamour', 1963, 'USA')
INSERT INTO T_FILM_FLM VALUES
(8, 2, '2001 l''odyssée de l''espace', 1968, 'USA')
INSERT INTO T_FILM_FLM VALUES
(9, 3, 'Le tigre aime la chair fraîche', 1964, 'France')
INSERT INTO T_FILM_FLM VALUES
(10, 3, 'Marie Chantal contre le Docteur Kha', 1965, 'France')
INSERT INTO T_FILM_FLM VALUES
(11, 3, 'La ligne de démarcation', 1966, 'France')
INSERT INTO T_FILM_FLM VALUES
(12, 3, 'La route de Corinthe', 1967, 'France')
INSERT INTO T_FILM_FLM VALUES
(13, 3, 'La femme infidèle', 1968, 'France')
INSERT INTO T_FILM_FLM VALUES
(14, 3, 'Que la bête meure', 1969, 'France')

INSERT INTO T_ACTEUR_ACT VALUES (1, 'Hanin', 'Roger', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (2, 'Audran', 'Stéphane', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (3, 'Laforêt', 'Marie', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (4, 'Reggiani', 'Serge', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (5, 'Denner', 'Charles', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (6, 'Tamiroff', 'Akim', 'USA')
INSERT INTO T_ACTEUR_ACT VALUES (7, 'Chabrol', 'Claude', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (8, 'Bouquet', 'Michel', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (9, 'Ronet', 'Maurice', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (10, 'Seberg', 'Jean', 'USA')
INSERT INTO T_ACTEUR_ACT VALUES (11, 'Perrin', 'Jacques', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (12, 'Yanne', 'Jean', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (13, 'Gélin', 'Daniel', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (14, 'Perkins', 'Anthony', 'USA')
INSERT INTO T_ACTEUR_ACT VALUES (15, 'Trintignan', 'Jean-Louis', 'France')
INSERT INTO T_ACTEUR_ACT VALUES (16, 'Stewart', 'James', 'USA')
INSERT INTO T_ACTEUR_ACT VALUES (17, 'Kelly', 'Grace', 'USA')
INSERT INTO T_ACTEUR_ACT VALUES (18, 'Burr', 'Raymond', 'USA')
INSERT INTO T_ACTEUR_ACT VALUES (19, 'Day', 'Doris', 'USA')
INSERT INTO T_ACTEUR_ACT VALUES (20, 'Novak', 'Kim', 'USA')
INSERT INTO T_ACTEUR_ACT VALUES (21, 'Douglas', 'Kirk', 'USA')
INSERT INTO T_ACTEUR_ACT VALUES (22, 'Olivier', 'Laurence', 'GB')
INSERT INTO T_ACTEUR_ACT VALUES (23, 'Laughton', 'Charles', 'GB')
INSERT INTO T_ACTEUR_ACT VALUES (24, 'Ustinov', 'Peter', 'GB')
INSERT INTO T_ACTEUR_ACT VALUES (25, 'Curtis', 'Tony', 'USA')
INSERT INTO T_ACTEUR_ACT VALUES (26, 'Mason', 'James', 'GB')
INSERT INTO T_ACTEUR_ACT VALUES (27, 'Sellers', 'Peter', 'GB')
INSERT INTO T_ACTEUR_ACT VALUES (28, 'Scott', 'George C', 'USA')

INSERT INTO T_JOUE_JOU VALUES (1, 16)
INSERT INTO T_JOUE_JOU VALUES (1, 17)
INSERT INTO T_JOUE_JOU VALUES (1, 18)
INSERT INTO T_JOUE_JOU VALUES (2, 16)
INSERT INTO T_JOUE_JOU VALUES (2, 21)
INSERT INTO T_JOUE_JOU VALUES (3, 16)
INSERT INTO T_JOUE_JOU VALUES (3, 19)
INSERT INTO T_JOUE_JOU VALUES (4, 16)
INSERT INTO T_JOUE_JOU VALUES (5, 21)
INSERT INTO T_JOUE_JOU VALUES (5, 22)
INSERT INTO T_JOUE_JOU VALUES (5, 23)
INSERT INTO T_JOUE_JOU VALUES (5, 24)
INSERT INTO T_JOUE_JOU VALUES (5, 25)
INSERT INTO T_JOUE_JOU VALUES (6, 26)
INSERT INTO T_JOUE_JOU VALUES (6, 27)
INSERT INTO T_JOUE_JOU VALUES (7, 27)
INSERT INTO T_JOUE_JOU VALUES (7, 28)
INSERT INTO T_JOUE_JOU VALUES (9, 1)
INSERT INTO T_JOUE_JOU VALUES (9, 2)
INSERT INTO T_JOUE_JOU VALUES (10, 3)
INSERT INTO T_JOUE_JOU VALUES (10, 4)
INSERT INTO T_JOUE_JOU VALUES (10, 5)
INSERT INTO T_JOUE_JOU VALUES (10, 6)
INSERT INTO T_JOUE_JOU VALUES (10, 1)
INSERT INTO T_JOUE_JOU VALUES (10, 7)
INSERT INTO T_JOUE_JOU VALUES (11, 9)
INSERT INTO T_JOUE_JOU VALUES (11, 10)
INSERT INTO T_JOUE_JOU VALUES (11, 2)
INSERT INTO T_JOUE_JOU VALUES (11, 11)
INSERT INTO T_JOUE_JOU VALUES (11, 12)
INSERT INTO T_JOUE_JOU VALUES (12, 10)
INSERT INTO T_JOUE_JOU VALUES (12, 9)
INSERT INTO T_JOUE_JOU VALUES (12, 8)
INSERT INTO T_JOUE_JOU VALUES (12, 7)
INSERT INTO T_JOUE_JOU VALUES (13, 2)
INSERT INTO T_JOUE_JOU VALUES (13, 15)
INSERT INTO T_JOUE_JOU VALUES (13, 7)
INSERT INTO T_JOUE_JOU VALUES (14, 12)

********

La solution :

SELECT *
FROM T_FILM_FLM F
WHERE EXISTS (SELECT 1
FROM T_JOUE_JOU J2
INNER JOIN T_ACTEUR_ACT A2
ON J2.ACT_ID = A2.ACT_ID
WHERE F.FLM_ID = J2.FLM_ID
AND ACT_NOM IN ('Hanin', 'Audran')
GROUP BY J2.FLM_ID
HAVING COUNT(*) >= 2)

Comment ça marche :
1) la ligne :
AND ACT_NOM IN ('Hanin', 'Audran')
permet de donner les noms de tous les acteurs qui doivent figurer au générique
du film.
2) la ligne :
HAVING COUNT(*) >= 2)
permet d'indiquer que tu veut qu'il y ait au moins 2 des acteurs figurants dans
la condition précédente pour valider la réponse.

Autre exemple :

SELECT *
FROM T_FILM_FLM F
WHERE EXISTS (SELECT 1
FROM T_JOUE_JOU J2
INNER JOIN T_ACTEUR_ACT A2
ON J2.ACT_ID = A2.ACT_ID
WHERE F.FLM_ID = J2.FLM_ID
AND ACT_NOM IN ('Ronet', 'Audran', 'Bouquet')
GROUP BY J2.FLM_ID
HAVING COUNT(*) >= 2)

donnera des films qui contiennent :
Ronet + Audran
ou
Ronet + Bouquet
ou
Audran + Bouquet
ou encore
Ronet + Audran + Bouquet

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


=B-)= a écrit:
Bonjour
Ceal fait pas mal de temps que je cherche la réponse sur le net mais comme
je ne suis pas très "calé" elle m'est sans doute passée au-dessus...
J'ai une base access des films que j'ai vus
Une table principale avec une fiche par film, un champ Index comme clé
primaire avec Numauto (et des autres champs : titre, année, résumé...)
Une table secondaire "Acteurs" avec un champ ID_film qui reprend la
référence du film et une ligne par acteur jouant dans le film. Les deux
tables sont liées avec une liaison un a plusieurs de manière à pouvoir
associer plusieurs acteurs à un film (la table acteurs contient donc une
ligne avec le N° d'identification du film et le nom de l'acteur jouant
dedans; si plusieurs acteurs jouents dans le même film, on a autant de
lignes que d'acteurs -avec leurs noms- et le même n° de film)
L'affichage se fait dans un formulaire principal pour le films et un sous
formulaire pour faire apparaître les noms des acteurs participant au film.
Pas de problème de ce côté
Mon problème est le suivant :
Je souhaite créer une requête qui m'affiche les fiches de films où jouent
ensemble les acteurs que je choisis
Ex: je veux les fiches des films où jouent DEPARDIEU et CLAVIER
Je pense qu'il faut porter l'interrogation sur la table des acteurs, mais
j'avoue qu'après je sèche...
Quelqu'un peut-il m'aider ? Merci d'avance
Philippe



1 2