Eléphanteau du PHP |
38 Messages
22 févr. 2007, 18:48
Kikoo,
Ce n'est pas si simple justement!
Avec cette requete, il faudrait 2 champs différents,
mot1 et
mot2. Or avec un seul champ
mot, il ne peut pas exister une ligne avec à la fois
mot=1 et
mot=2.
Exemple:
Personne, Residence
-----------------------
Patrick, Paris
Patrick, Marseille
Georges, Paris
Et je veux les personnes qui ont une résidence à Paris, ET une à Marseille.
Mais pour chaque ligne, "Residence" vaudra soit l'un, soit l'autre mais jamais les 2.
C'est pour ça que l'idée d'intersection m'est venu, mais peut-être qu'il existe une autre manière.
Hier soir en m'endormant, j'ai pensé à un truc:
Code : Tout sélectionner
SELECT e1.page_id
FROM engine AS e1, engine AS e2
WHERE e1.keyword='1' AND e2.keyword='2'
AND e1.page_id = e2.page_id
Ca fonctionne parfaitement, par contre la jointure est pas mal lourde, surtout que c'est pour déployer sur une grosse archi. Et il peut y avoir plusieurs jointures si plusieurs valeurs de
mot recherchées.
J'ai pensé à faire cette intersection en PHP, mais ça multiplie le nombre de requêtes à faire (sélectionner toutes les valeurs de
site où
mot=1, puis toutes les valeurs de
site où
mot=2
Mais c'est lourd également en PHP.
Si quelqu'un a une autre idée, je suis prenneur, sinon tant pis.
Merci d'avance,
@++