За последние 24 часа нас посетили 17826 программистов и 1678 роботов. Сейчас ищут 830 программистов ...

Выбрать данные по значениям двух произв. полей

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

  1. mmx

    mmx Новичок

    С нами с:
    26 ноя 2016
    Сообщения:
    7
    Симпатии:
    0
    Привет всем.
    Использую WP и MySQL . Задумка такая из $posts массива взять данные для календаря. Но есть проблема в этом массиве нет данных с именем 'Информация', который я хочу использовать. Эти данные хранятся в postmeta.meta_key 'Информация'. Нужно добавить запрос для вывода дух полей из postmeta.meta_key. Сейчас я получаю только данные postmeta.meta_key 'Дата"

    Вот часть кода,

    Код (Text):
    1.  
    2.  
    3. $queryString = "SELECT * FROM $wpdb->posts
    4. LEFT JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id)
    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. AND $wpdb->postmeta.meta_key = 'Дата'
    12. AND STR_TO_DATE(wp_postmeta.meta_value,'%d.%m.%y') >= STR_TO_DATE('$currentDate','%d.%m.%y')
    13. ORDER BY STR_TO_DATE($wpdb->postmeta.meta_value,'%d.%m.%y') asc limit $begin_limit,$post_per_page ";
    14.  
    15. $posts = $wpdb->get_results($queryString);
    16.  
    17. function print_arr($arr)
    18. { echo '<pre>' . print_r($arr, true) . '</pre>'; }
    19. print_arr($posts);
    Вот то что я получаю .
    Код (Text):
    1.  
    2. Array
    3. ( [0] => stdClass Object
    4.   ( [ID] => 32175
    5.  [post_author] => 4
    6.  [post_date] => 2016-07-04 13:28:45
    7.  [post_date_gmt] => 2016-07-04 13:28:45
    8.  [post_content] => дирижёр — Дмитрий Филатов
    9.  [post_title] => Год российского кино.
    10.  [post_excerpt] =>
    11.  [post_status] => publish
    12.  [comment_status] => closed
    13.  [ping_status] => closed
    14.  [post_password] =>
    15.  [post_name] => %d0%b3%d0%be%d0%b4
    16.  [to_ping] =>
    17.  [pinged] =>
    18.  [post_modified] => 2016-07-05 12:33:25
    19.  [post_modified_gmt] => 2016-07-05 12:33:25
    20.  [post_content_filtered] =>
    21.  [post_parent] => 0
    22.  [guid] => http://192.168.0.140/b/?p=32175
    23.  [menu_order] => 0
    24.  [post_type] => post
    25.  [post_mime_type] =>
    26.  [comment_count] => 0
    27.  [meta_id] => 42318
    28.  [post_id] => 32175
    29.  [meta_key] => Дата
    30.  [meta_value] => 27.11.16
    31.  [object_id] => 32175
    32.  [term_taxonomy_id] => 106
    33.  [term_order] => 0
    34.  [term_id] => 106
    35.  [taxonomy] => category
    36.  [description] =>
    37.  [parent] => 0
    38.  [count] => 1039
    39.  [name] => Афиша
    40.  [slug] => %d0%b0%d1%84%d0%b8%d1%88%d0%b0
    41.  [term_group] => 0
    42.  )
    В этом массиве данные из postmeta.meta_key присутствуют:
    [meta_key] => Дата
    [meta_value] => 27.11.16

    Мне нужно ещё получить из postmeta.meta_key

    [meta_key] => Информация
    [meta_value] => ( Все текстовые значения )

    Прошу помощи…
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    :eek:

    надо дать другое имя в SELECT * для meta_value и meta_key для таблицы postmeta через alies
     
  3. mmx

    mmx Новичок

    С нами с:
    26 ноя 2016
    Сообщения:
    7
    Симпатии:
    0
    Дайте больше информации. Ссылку на примеры или описание или набросайте код. Я пока новичок...
     
    #3 mmx, 28 ноя 2016
    Последнее редактирование: 28 ноя 2016
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    почитай книгу по MySQL, там почти всё есть

    поищи по словам mysql table alies или mysql псевдоним

    http://www.mysql.ru/docs/man/SELECT.html читать про псевдоним

    PHP:
    1. SELECT `название таблицы`.*, `postmeta`.`meta_key`, `postmeta`.`meta_value` FROM
     
  5. mmx

    mmx Новичок

    С нами с:
    26 ноя 2016
    Сообщения:
    7
    Симпатии:
    0
    Возможно я что то не так объясни. Мне нужно в массиве $posts получить визуально данные с мета полей, как первое так и второе значения, я получаю только из мета поля одно значение, вот я попытался сделать псевдоним для двух полей при помощи as .
    Код (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 = 'Информация'
    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') asc limit $begin_limit,$post_per_page  
    17.              
    18.                                ";
    19. $posts = $wpdb->get_results($queryString);

    При распечатке получаю только
    [meta_key] => Информация
    [meta_value] => Большой зал, 19:00
    а нужно получить
    [meta_key_1] => Информация
    [meta_value_1] => Большой зал, 19:00
    [meta_key_2] => Дата
    [meta_value_2] => 27.11.16
     
    #5 mmx, 28 ноя 2016
    Последнее редактирование: 28 ноя 2016