J'essaie de résoudre le problème du deuxième jour mais sans succès pour le moment.Combiner plusieurs requêtes MySql en une seule requête
Mon but est:
Pour certains ID taxonomie terme (par exemple 1) Je dois obtenir au moins un filepath de ImageField des nœuds qui appartiennent à ce terme id (tid 1)
Voici trois requêtes qui me donnent ce dont j'ai besoin. Tout fonctionne bien mais je sais que ça a l'air vraiment moche et, j'en suis sûr, il y a un gros problème de performance.
$childterm = 10; // Taxonomy term ID
$result = db_fetch_array(db_query("SELECT node.vid FROM node JOIN
term_node ON node.vid=term_node.vid WHERE
term_node.tid=$childterm AND
node.type= 'product' LIMIT 0,1"));
$nvid = $result['vid']; // Extracting node VID by term ID that will be used futher
$result = db_fetch_array(db_query("SELECT field_image_cache_fid FROM
content_field_image_cache WHERE
vid = '%d'", $nvid));
$fid = $result['field_image_cache_fid']; // Extracting file ID from array
$result = db_fetch_array(db_query("SELECT filepath FROM files WHERE
files.fid = '%d'", $fid));
$filepath = $result['filepath']; // Finally. Extracting file path from array
Veuillez regarder l'image.
Comment puis-je améliorer la requête? Puis-je obtenir la valeur de chemin de fichier en utilisant seulement une requête SQL?
Merci d'avance.
Je pense que ceux-ci devraient probablement être des jointures internes plutôt que des jointures externes. –
@Mark B: Il est vrai que les vieilles habitudes ont la vie dure. – googletorp
En outre, sachez que CCK, le module fournissant des tables comme content_field_image_cache, pourrait (et par conséquent WILL) modifier la disposition de la base de données à volonté. Cette table pourrait juste disparaître sur les changements de configuration. Les requêtes comme les vôtres vont alors se casser. Vous pourriez au moins mettre de la documentation à ce sujet. Ou, plus solide, fournit des vérifications dans hook_requirements(). – berkes