it-swarm.dev

SQL dotaz pro výběr příspěvků z více kategorií

Vytvořil (a) jsem dotaz pro výběr příspěvků v rámci kategorie. Funguje dobře. Když se ale rozhodnu přidat sekundární filtr, aby se vyloučila kategorie, dotaz vrátí stejnou sadu výsledků, jako by byl filtr sekundární kategorie ignorován.

Následující dotaz by měl vybrat všechny příspěvky v kategorii 7 a vyloučit ty v kategorii 10:

$querystr = "SELECT * FROM $wpdb->posts 
LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)  
LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)  

WHERE ($wpdb->term_taxonomy.term_id = 7
   AND $wpdb->term_taxonomy.term_id <> 10  
   AND $wpdb->term_taxonomy.taxonomy = 'category'   
   AND $wpdb->posts.post_type = 'post'  
   AND $wpdb->posts.post_status = 'publish')";

Může někdo pomoci?

1
Riccardo

Použil bych vestavěný API jako Rarst zmínil. Můžete něco takového udělat:

$just_seven = new WP_Query(
  array(
    'category__in' => array( 7 ),
    'category__not_in' => array( 10 )
  )
);

Ty by pak měly tyto položky v $just_seven->posts.

Pokud však musíte použít přímý příkaz SQL, doporučuji namísto INNER JOIN použít LEFT JOIN.

1
John P Bloch