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 :
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".
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'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 :
me retourne une errreur"1242" - Subquery returns more than 1 row
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)
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
Partager