Bonjour à tous,

La base de données est constituée de:
- une table "details" :: champs "id", "ref_mots" et "ref_definitions"
- une table "mots" :: champs "id", "mot"
- une table "definitions" :: champs "id", "definition"

Un mot peut contenir une ou plusieurs définitions
Une définition est la propriété d'un à plusieurs mots

Dans une liste de mot, un mot est sélectionné.
La requête pour en afficher ses définitions est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT definitions.id, definitions.definition
FROM details LEFT JOIN definitions ON definitions.id=details.ref_definitions
WHERE (((details.ref_mots)=[Identifiant du mot ?]));
J'aurais aimé afficher tous les mots du dictionnaire dont les définitions sont les mêmes que, par exemple, l'identifiant du mot "1".

J'ai essayer avec des requêtes imbriquées (sous-requêtes), des requêtes avec CASE, IF, EXIST mais sans succès.

J'ai du mal à comprendre les sous-requêtes. Ce n'est pas faute d'avoir cherché et fait des test, mais je n'arrive pas à savoir comment je peux faire une requête qui répondent à deux conditions différentes (sur deux enregistrements différent) dans un seul champs ("details.ref_definitions").

Un des test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT details.ref_mots
FROM details
WHERE  details.ref_definitions IN 
(SELECT details.ref_definitions = 1 FROM details)
AND
(SELECT details.ref_definitions = 2 FROM details)
me retourne une errreur"1242" - Subquery returns more than 1 row

Ce serait sympa de m'expliquer comment je peux construire ma requête.

D'avance je remercie ce forum d'exister ainsi que les personnes donnant un coup de pouce aux désœuvrés comme moi.

Eric