Поддержка Проблемы и решения Проблема при SQL запросе в базу

  • У меня имеется 2 таксономии: city и street.
    Мне нужно через запрос к базе получить postmeta для одного из моих плагинов (reviewer).
    Есть рабочий код для одной таксономии:

    SELECT * 
    FROM $wpdb->postmeta 
    LEFT JOIN $wpdb->posts 
    ON($wpdb->posts.ID = $wpdb->postmeta.post_id) 
    LEFT JOIN $wpdb->term_relationships 
    ON ($wpdb->postmeta.post_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 
    meta_key LIKE 'rwp_rating%' 
    AND ($wpdb->term_taxonomy.taxonomy = 'city' AND $wpdb->term_taxonomy.term_id = '2') 

    Но если в конце добавить AND ($wpdb->term_taxonomy.taxonomy = 'street' AND $wpdb->term_taxonomy.term_id = '5') то вернет пустой результат.

    Еще мне подсказали, что надо делать как-то так:

    SELECT * FROM $wpdb->postmeta 
    LEFT JOIN $wpdb->posts ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) 
    LEFT JOIN $wpdb->term_relationships ON ($wpdb->postmeta.post_id = $wpdb->term_relationships.object_id) 
    LEFT JOIN $wpdb->term_taxonomy as t1 ON ($wpdb->term_relationships.term_taxonomy_id = t1.term_taxonomy_id) 
    LEFT JOIN $wpdb->term_taxonomy as t2 ON ($wpdb->term_relationships.term_taxonomy_id = t2.term_taxonomy_id) 
    WHERE meta_key LIKE 'rwp_rating%' AND (t1.taxonomy = 'city' AND t1.term_id = '2') AND (t2.taxonomy = 'street' AND t2.term_id = '3331');

    Но это также вернет пустой результат. Можете помочь?
    p.s. надо чтобы оба утверждения были верны: city = 2 AND street = 2, а не OR.

    • Тема изменена 3 года, 9 месяцев назад пользователем Roman Sarvarov.
    • Тема изменена 3 года, 9 месяцев назад пользователем Roman Sarvarov.
Просмотр 1 ответа (всего 1)
  • Пример из Кодекса https://codex.wordpress.org/Class_Reference/WP_Query

    
    $args = array(
    	'post_type' => 'post',
    	'tax_query' => array(
    		'relation' => 'AND',
    		array(
    			'taxonomy' => 'movie_genre',
    			'field'    => 'slug',
    			'terms'    => array( 'action', 'comedy' ),
    		),
    		array(
    			'taxonomy' => 'actor',
    			'field'    => 'term_id',
    			'terms'    => array( 103, 115, 206 ),
    			'operator' => 'NOT IN',
    		),
    	),
    );
    $query = new WP_Query( $args );
    

    Если у Вас таксономии, то что в запросе делает meta_key? Это гвоздь не от той стенки!

Просмотр 1 ответа (всего 1)
  • Тема «Проблема при SQL запросе в базу» закрыта для новых ответов.