par
FloBaoti » 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,
@++
Kikoo,
Ce n'est pas si simple justement!
Avec cette requete, il faudrait 2 champs différents, [b]mot1[/b] et [b]mot2[/b]. Or avec un seul champ [b]mot[/b], il ne peut pas exister une ligne avec à la fois [b]mot=1[/b] et [b]mot=2[/b].
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]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[/code]
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 [b]mot[/b] 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 [b]site[/b] où [b]mot=1[/b], puis toutes les valeurs de [b]site[/b] où [b]mot=2[/b]
Mais c'est lourd également en PHP.
Si quelqu'un a une autre idée, je suis prenneur, sinon tant pis.
Merci d'avance,
@++