Optimisation de deux requêtes SQL
Bonjour,
je suis en train de refondre mon portfolio sous wordpress, et pour faciliter les choses par rapport à mon nouveau fonctionnement, je cherche à obtenir toutes les informations dont j'ai besoin en une seule requête.
J'ai pour le moment une requête qui fonctionne :
Code:
1 2 3 4 5 6 7 8 9 10 11
| SELECT p.ID, p.post_name, p.post_excerpt, p.post_date, p.guid, t.term_id, t.slug, pm.meta_value
FROM $wpdb->posts AS p, $wpdb->terms AS t, $wpdb->term_relationships AS tr, $wpdb->term_taxonomy AS tt, $wpdb->postmeta AS pm
WHERE p.post_status = 'publish'
AND tt.term_id = t.term_id
AND tt.term_taxonomy_id = tr.term_taxonomy_id
AND tt.taxonomy = 'category'
AND p.ID = tr.object_id
AND p.ID = pm.post_id
AND pm.meta_value LIKE '%.jpg%'
GROUP BY p.ID
ORDER BY p.post_date DESC; |
Celle-ci me permet d'obtenir tous mes posts, ainsi que leur catégorie et les meta informations liées (notamment l'image d'illustration).
Cependant une partie de mes posts sont aussi soumis a un système de notation.
Je peux faire la requête suivante pour obtenir cette information :
Code:
1 2 3
| SELECT p.ID, r.nb_vote, r.total
FROM $wpdb->posts AS p, wp_ratings AS r
WHERE p.ID = r.post_id |
J'aimerais pouvoir ne faire cela qu'en une seule requête, celle du début. J'avais dans un premier rajouté une clause dans le WHERE : p.ID = r.post_id, mais celle ci exclut mes posts qui ne sont pas notés...
J'ai cherché un peu du coté des jointures externes, mais j'avoue que je manque de compréhension pour arriver à mixer le tout de manière fonctionnelle.
Merci pour votre aide!
Tout de bon