[MySQL] Requête assez compliquée

Requête assez compliquée [MySQL] - Programmation

Marsh Posté le 15-03-2002 à 13:11:28    

Voici ma table (search) :
Colonnes :   keyword    id
            histoire    10
            codes       10
            histoire    11
 
Le champs ID me sert à faire une jointure avec une autre table (news)... Quand je fais ça :

Code :
  1. SELECT DISTINCT news.news FROM news, search WHERE (search.keyword='histoire' OR search.keyword='codes') AND news.num=search.id


 
Le problème c'est qu'il va me sortir les 3 mots-clés ci-dessus or je ne voudrais que ceux qui ont le même ID. Par exemple comment demander

Code :
  1. 'histoire' et 'code' sachant que ces deux mots doivent avoir le même ID et que search.id == news.num

?
 
Merci d'avance.

Reply

Marsh Posté le 15-03-2002 à 13:11:28   

Reply

Marsh Posté le 15-03-2002 à 14:11:05    

c'est pas clair ce que tu veux, tu peux préciser les infos dont tu disposes avant de faire ta requete?

Reply

Marsh Posté le 15-03-2002 à 14:29:21    

OK, donc les tables :

Code :
  1. Dans la table search :
  2. Colonnes : keyword      |    id
  3. -------------------------------
  4. Ligne 1 :  histoire     |    1
  5. Ligne 2 :  code         |    1
  6. Ligne 3 :  histoire     |    2
  7. Dans la table news :
  8. Colonnes : id        |     texte
  9. --------------------------------
  10. Ligne 1 :  1         |   Mon texte 1
  11. Ligne 2 :  2         |   Mon texte 2
  12. Ligne 3 :  3         |  etc...


 
Ce que je souhaite (je le fais en Français) :
Etape 1 : Sélectionner id de la table search tel que keyword='histoire' et keyword='code'  mais aussi que 'histoire' et 'code' aient le même id
Etape 2 : Sélectionner texte dans la table news tel que search.id_récupéré_avant=news.id

 

[jfdsdjhfuetppo]--Message édité par Dost67--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 15-03-2002 à 14:30:29    

En fait dans mon cas je fais une recherche sur keyword='histoire' AND keyword='code', je veux qu'il me sorte 'Mon texte 1'.

Reply

Marsh Posté le 15-03-2002 à 14:34:38    

Bon j'ai l'impression que c'est toujours pas clair alors je fais le début de requête et je mets entre crochet ce que je ne sais pas faire :
 
SELECT news.texte FROM news, search WHERE (search.keyword='histoire' OR search.keyword='code';) AND [id de 'histoire' == id de 'code'] AND news.id=search.id

Reply

Marsh Posté le 15-03-2002 à 14:44:54    

SELECT ... WHERE (search.keyword = 'keyword' OR search.code='code';) LEFT JOIN on search.id = news.id
 
ça devrait donner ça non ?
 
histoire |   1  | Mon texte 1 |
code     |   1  | Mon texte 1 |


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 15-03-2002 à 14:51:29    

Rhaaa! mais tu dis toujours pas ce que tu as au départ comme paramètre et ce que tu veux au final!

Reply

Marsh Posté le 15-03-2002 à 14:54:23    

Au départ j'ai des mots clés dans un champs texte HTML. Puis traitement PHP pour faire ressortir les truc intéressants... Ensuite la requête. --> C'est un moteur de recherche.
 
Bon je dois partir. Pour le JOIN j'essaierai ce soir mais j'ai cru entendre que c'était un peu lourd à faire ce type de requête ?

Reply

Marsh Posté le 15-03-2002 à 15:16:18    

Enfin! donc si j'ai bien compris tu veux faire une requete qui te sort l'article qui comprend les mots "hisoire" ET "code"
 
Dans ce cas

Code :
  1. SELECT news.news FROM news,search AS S1, search AS S2 WHERE news.id=S1.id AND S1.keyword='histoire' AND S2.keyword='codes' AND S1.id=S2.id

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed