Пользовательский SQL-запрос Wordpress и объединение групп

Я пытаюсь выполнить приведенный ниже запрос, чтобы получить уникальный результат object_id. Я решил, что использование Group_concat Distinst может работать лучше всего. Мне нужно использовать результаты запроса в качестве переменной в предложении where моего следующего запроса.

Приведенный ниже запрос отлично работает в программном обеспечении flyspeedsql, но я не вижу результатов в php.

Есть ли лучший способ подойти к этому?

Является ли wordpress get_results правильной функцией для использования?

Он должен что-то вернуть ссылка 55,56,57

Кроме того, по результатам этого запроса, как мне настроить переменную, которую можно было бы использовать в предложении where моего следующего запроса?

Запрос 1

      $query = ("Select
         Group_Concat(Distinct $wpdb->term_relationships.object_id)
      From
           $wpdb->term_taxonomy Inner Join
           $wpdb->term_relationships On $wpdb->term_taxonomy.term_taxonomy_id =
           $wpdb->term_relationships.term_taxonomy_id Inner Join
           $wpdb->terms On $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id
       Where
           $wpdb->terms.name = 'Honda' And
           $wpdb->term_taxonomy.taxonomy = 'brands'");

       $results = $wpdb->get_results($query);

person user1609391    schedule 15.01.2013    source источник
comment
Вам нужны только идентификаторы из вашей первой таблицы, чтобы вы могли использовать их для запроса в следующей таблице? Кроме того, вы объявляете global $wpdb; перед использованием $wpdb?   -  person    schedule 16.01.2013
comment
@Mister Melancholy, да, я использую global $wpdb; перед этим утверждением. Мне нужен идентификатор, чтобы я мог запустить другой запрос, использующий идентификаторы в качестве критерия. Но я не уверен, что это самый эффективный способ получить идентификаторы для использования в критериях. Какие-нибудь мысли?   -  person user1609391    schedule 16.01.2013
comment
Вы хотите запустить запрос, который проверяет эти 3 идентификатора отдельно, или они будут в одном поле? Структура таблицы/базы данных была бы гигантской помощью здесь.   -  person    schedule 16.01.2013
comment
Только одно поле что-то вроде select * from tblname where object_id=$value Переменная $value будет идентификатором объекта, возвращенным в приведенном выше запросе.   -  person user1609391    schedule 16.01.2013
comment
О, извините за поздний ответ. Вчера вечером я устал и хотел убедиться, что не ошибся или что-то в этом роде. Надеюсь, поможет.   -  person    schedule 17.01.2013


Ответы (1)


Вы слышали о подзапросах MYSQL?

Честно говоря, я сам не читал всю эту статью, но я достаточно хорошо знаю концепцию, чтобы делать то, что вы хотите, с 1 запросом (хотя это будет чудовищно)

Select
     $wpdb->some_other_table.some_field
From
     $wpdb->some_other_table
Where
     $wpdb->some_other_table.some_other_field = (Select
       Group_Concat(Distinct $wpdb->term_relationships.object_id)
  From
       $wpdb->term_taxonomy Inner Join
       $wpdb->term_relationships On $wpdb->term_taxonomy.term_taxonomy_id =
       $wpdb->term_relationships.term_taxonomy_id Inner Join
       $wpdb->terms On $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id
   Where
       $wpdb->terms.name = 'Honda' And
       $wpdb->term_taxonomy.taxonomy = 'brands');

Я не знаю, будет ли это соответствовать вашим потребностям на 100%, потому что ваше описание довольно расплывчато, но я уверен, что вы сможете понять, как заставить это работать на вас, если оно окажется решением.

person Community    schedule 17.01.2013