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

2 réponses

1 2
Avatar
Patrick Texier
[suite sur fr.comp.applications.sgbd, je ne lis pas les autres
police non proportionelle indispensable à la lecture de cet article]

Le Mon, 28 Mar 2005 16:35:33 +0200, "=B-)="
a écrit :

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...


Le noeud du problème, ce n'est pas la liaison des tables mais
l'imbrication des requêtes. Vous ne pouvez pas obtenir le résultat en
une seule.

Il faut attaquer en deux requêtes sélection. La première avec la table
Acteurs

Champ CodeFilm CodeActeur
Table Acteur Acteur
Opération Regroupement Regroupement
Sélection "Depardieu" ou "Clavier"

Je l'appelle Requete.
Et on l'ouvre dans une seconde requête :

Champ CodeFilm CodeActeur
Table Requete Requete
Opération Regroupement Compte
Affichage Oui Non
Sélection = 2

Le résultat est la liste des codes navets qui contiennent Depardieu et
Clavier. On peut bien sur lier des tables dans cette seconde requête.

On peut prendre plus d'acteurs dans la première requête, il suffit
d'ajuster la sélection du compte de code acteur en conséquence dans la
deuxième requète.
--
Patrick Texier

Tous les résultats de GP F1 librement téléchargeables
http://www.genindre.org/perso/f1.htm

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/

1 2