Sous-requête et recherche boolean

Sous-requête et recherche boolean - SQL/NoSQL - Programmation

Marsh Posté le 05-08-2009 à 22:10:05    

Salut à tous,
Je tente désespérément de faire un requête et sous-requête.
J'ai 2 tables: category (champs id_cat et status) et images (champs id_img, id_cat et keywords).
J'aimerais obtenir une liste d'images ayant un mot clé et étant dans la catégorie avec status=0
 
Sans aucun problème avec une jointure, mais je n'arrive pas à le faire avec des sous requêtes, par souci de performance.
 
Merci de votre aide. :(

Reply

Marsh Posté le 05-08-2009 à 22:10:05   

Reply

Marsh Posté le 05-08-2009 à 23:08:53    

Code :
  1. SELECT id_img
  2. FROM Images
  3. WHERE id_cat IN (SELECT id_cat FROM category WHERE STATUS=0)


Ceci dit, je vois pas pourquoi tu tiens tant à une sous requête... Contrairement à ce que tu dis, une jointure est largement plus performante qu'une sous-req


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-08-2009 à 23:29:17    

Merci pour le code, ça fonctionne.
En tout cas ça fonctionne énormément mieux que ma jointure:
SELECT * FROM $table_images, $table_category WHERE (MATCH ($table_images.keywords) AGAINST (\"$sk_search\" IN BOOLEAN MODE)) AND $table_category.st_cat=0
 
Peut-être mal formulé.
Il faut bien s'améliorer.

Reply

Marsh Posté le 05-08-2009 à 23:51:22    

Oh my god, qu'est ce que c'est que cette jointure ? [:pingouino]
Et si tu essayais une vraie jointure ? :o

Code :
  1. SELECT id_img
  2. FROM Images INNER JOIN category ON images.id_cat = category.id_cat
  3. WHERE STATUS = 0 AND keywords NOT NULL


Message édité par Harkonnen le 05-08-2009 à 23:51:56

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-08-2009 à 10:21:02    

ben il avait pas fait de jointure, il se retrouvait donc avec un produit cartésien des 2 tables :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 06-08-2009 à 10:26:33    

Ah mais oui, j'avais pas vu qu'il avait pas mis de WHERE pour faire sa jointure [:mlc]
Tu m'étonnes que ça rame [:mlc]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-08-2009 à 17:04:44    

oui, c'est juste, il me semblait que qqchose clochait.
en effet, on multiplie mes 150000 images par mes 1000 catégories, oups.
mais il y a tout de même un WHERE, ce qui me donnait le bon résultat.
merci pour le code, je vais donc modifier mes requêtes.

Reply

Sujets relatifs:

Leave a Replay

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