Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question select

3 réponses
Avatar
Remi Thomas
J'ai la table Idx avec la définition des index

Idx
Id (integer)
Nom (text)

La table Document avec un nom de document

Document
Id (integer)
Nom (text)

Et enfin ma table valeur d'index pour un document

Valeur
DocId (integer)
IdxId (integer)
Valeur (text)

Comment retrouver les documents (Document.Nom) contenant à la fois l'index
Idx.Nom='Age' valeur Valeur.Valeur='15' ET Idx.Nom='Sexe' valeur
Valeur.Valeur='M' ?

Je coince pour le moment, qui peut m'aider ?

Rémi

3 réponses

Avatar
Michaël
Salut,

Le 26.11.2003 14:48, Remi Thomas a écrit :
Comment retrouver les documents (Document.Nom) contenant à la fois l'index
Idx.Nom='Age' valeur Valeur.Valeur='15' ET Idx.Nom='Sexe' valeur
Valeur.Valeur='M' ?



Essaie ceci (requête pas vérifiée, ni testée ....) :

SELECT document.nom FROM document, idx, valeur
WHERE document.id=valeur.docid
AND idx.id=valeur.idxid
AND idx.nom='Age' AND valeur.valeur='15'
UNION
SELECT document.nom FROM document, idx, valeur
WHERE document.id=valeur.docid
AND idx.id=valeur.idxid
AND idx.nom='Sexe' AND valeur.valeur='M';

Cdt,
Michaël
Avatar
Remi Thomas
Michaël wrote:
Salut,

Le 26.11.2003 14:48, Remi Thomas a écrit :
Comment retrouver les documents (Document.Nom) contenant à la fois
l'index Idx.Nom='Age' valeur Valeur.Valeur='15' ET Idx.Nom='Sexe'
valeur Valeur.Valeur='M' ?



Essaie ceci (requête pas vérifiée, ni testée ....) :

SELECT document.nom FROM document, idx, valeur
WHERE document.id=valeur.docid
AND idx.id=valeur.idxid
AND idx.nom='Age' AND valeur.valeur='15'
UNION
SELECT document.nom FROM document, idx, valeur
WHERE document.id=valeur.docid
AND idx.id=valeur.idxid
AND idx.nom='Sexe' AND valeur.valeur='M';

Cdt,
Michaël



Cela fonctionne avec INTERSECT à la place d'UNION
Je suis certain qu'il est possible de factoriser (document.id=valeur.docid
AND idx.id=valeur.idxid) mais je n'ai pas suffisament pratiqué pour trouver.

Rémi
Avatar
Michaël
Le 26.11.2003 17:37, Remi Thomas a écrit :
Cela fonctionne avec INTERSECT à la place d'UNION
Je suis certain qu'il est possible de factoriser (document.id=valeur.docid
AND idx.id=valeur.idxid) mais je n'ai pas suffisament pratiqué pour trouver.



Autre solution alors :

SELECT document.nom FROM document, idx, valeur
WHERE document.id=valeur.docid
AND idx.id=valeur.idxid
AND ((idx.nom='Age' AND valeur.valeur='15') OR
(idx.nom='Sexe' AND valeur.valeur='M'));

Cdt,
Michaël