Comment récupérer une valeur avec deux conditions dans une colonne (sur deux enregistrements différents)
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:
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:
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
Mot ayant la même définition que le mot X
Citation:
Envoyé par
Vivaldi1er
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:
1 2 3 4 5
| SELECT p.mot
FROM mots p
INNER JOIN details r
ON r.ref_mots = p.id
AND r.ref_definitions IN (SELECT ref_definitions FROM details WHERE ref_mots = 1) |