Bonjour,
Je possède une table :
Field Type
keyword int(10) unsigned
file mediumint(8) unsigned
score float
Je voudrais effectuer une requête qui me renvoie tous les `file` qui contienne les `keyword`.
Actuellement, j'ai réussi à faire la requête suivante :
Le problème est que la requête effectue un OR avec les mots recherchés et non pas un AND. et bien sûr, si je remplace le OR par un AND, il n'y a aucun résultat (logique).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT * FROM `moteur_key_word` WHERE (`keyword` =10 OR `keyword` =100 ) GROUP BY `fichier` LIMIT 0 , 30
J'ai ensuite essayé de faire une requête "bourrin" :
Seulement il me renvoie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT * FROM ( SELECT * FROM `moteur_key_word` WHERE ( `keyword` =10 ) )a JOIN ( SELECT * FROM `moteur_key_word` WHERE ( `keyword` =100 ) )b GROUP BY `file`
#1052 - Column 'file' in group statement is ambiguous
Logique puisque le JOIN crée 2 champs avec comme nom file. En plus, en regardant les résultats, la requête m'a l'air pas vraiment au point...
Bref, si quelqu'un a une idée, elle est la bienvenue.
Le top du top, ce serait qu'en faisant le GROUP BY, il additionne le score d'un même fichier.
Voilà, vous savez tout. Merci d'avoir lu mon post et mon WE.
PS : il s'agit effectivement d'un moteur de recherche.
Partager