За последние 24 часа нас посетили 16172 программиста и 1666 роботов. Сейчас ищут 896 программистов ...

Выборка по двум мета полям

Тема в разделе "PHP и базы данных", создана пользователем mmx, 29 ноя 2016.

  1. mmx

    mmx Новичок

    С нами с:
    26 ноя 2016
    Сообщения:
    7
    Симпатии:
    0
    Привет.
    Делаю выборку по двум мета полям, все выбирает. Смотрю массив там показывается только одно мета поле. Как добиться того чтобы увидеть в массиве два мета поля по которым идет выборка ?
    Вот код.
    Код (Text):
    1. $queryString = "SELECT * FROM $wpdb->posts
    2.                 LEFT JOIN $wpdb->postmeta as postmeta_2 ON($wpdb->posts.ID = postmeta_2.post_id)
    3.                 LEFT JOIN $wpdb->postmeta as postmeta_1 ON($wpdb->posts.ID = postmeta_1.post_id)
    4.                                
    5.                 LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
    6.                 LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
    7.                 LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id)
    8.                 WHERE $wpdb->terms.name = 'Афиша'
    9.                 AND $wpdb->term_taxonomy.taxonomy = 'category'
    10.                 AND $wpdb->posts.post_status = 'publish'
    11.                
    12.                 AND postmeta_1.meta_key = 'additional_settings'
    13.                 AND postmeta_2.meta_key = 'Дата'
    14.                
    15.                 AND STR_TO_DATE(postmeta_2.meta_value,'%d.%m.%y') >= STR_TO_DATE('$currentDate','%d.%m.%y')
    16.                     ORDER BY STR_TO_DATE(postmeta_2.meta_value,'%d.%m.%y') ";
    17. $events = $wpdb->get_results("$queryString","ARRAY_A");
    18. print_r($events);
    В массиве есть данные postmeta_1.meta_key = 'additional_settings' а AND postmeta_2.meta_key = 'Дата' не отображается хотя выборка происходит корректно по этому второму полю тоже...
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    SELECT *, postmeta_1.( имя столбца), postmeta_2.( имя столбца) FROM
     
  3. mmx

    mmx Новичок

    С нами с:
    26 ноя 2016
    Сообщения:
    7
    Симпатии:
    0
    Привет. Спасибо за ответ. Но не срабатывает.
    Код (Text):
    1. SELECT *, postmeta_1.meta_key, postmeta_2.meta_key FROM $wpdb->posts
    Получаю:
    [meta_id] => 47862
    [post_id] => 34885
    [meta_key] => Дата
    [meta_value] => 05.12.2016 19:00

    Без выборки по postmeta_1 и postmeta_2
    Получаю
    [meta_id] => 47862
    [post_id] => 34885
    [meta_key] => additional_settings
    [meta_value] => 05.12.2016 19:00

    Меняется только название meta_key , а вторая информация с ячейки meta_value так же не видна...
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    потому что один ключ массива перебивает другой
    пробни так:
    SELECT *, postmeta_1.meta_key AS meta_one, postmeta_2.meta_key AS meta_two FROM $wpdb->posts
     
    mmx нравится это.
  5. mmx

    mmx Новичок

    С нами с:
    26 ноя 2016
    Сообщения:
    7
    Симпатии:
    0
    Да получилось только я заменил meta_key на meta_value
    Код (Text):
    1. SELECT *, postmeta_1.meta_value AS meta_one, postmeta_2.meta_value AS meta_two    FROM $wpdb->posts
    Результат :
    [meta_one] => 30.11.2016 19:00
    [meta_two] => 30.11.16

    Еще раз огромное спасибо, сам бы не докопал.