MySQL select, который обрабатывает поле, не существует и возвращает его, как если бы оно было пустым - PullRequest
0 голосов
/ 08 апреля 2011

Я хочу, чтобы это возвращало строку, есть ли в wp_postmeta строка, где meta_key = "Feedback_Initials" и wp_postmeta.oject_id = wp_posts.ID сообщение, которое содержит мое искомое значение в wp_postmeta.meta_value

это сложно просто описать

в настоящее время, если в сообщениях есть строка с идентификатором Я хочу собрать все свои данные, привязанные к этому идентификатору, из postmeta

поэтому я пытаюсь сделать это с помощью внутреннего объединения и вложенных выборок

проблема в том, что если мета-значение отсутствует (для него нет строки в postmeta, например, нет строки Feedback_initials для этого идентификатора), то я все равно хотел бы получить строку и получить значение для инициалов обратной связи. пустой.

как и сейчас, он полностью исключает эту строку и идентификатор из результатов, если не было Feedback_Initials.

$set1=$wpdb->get_results ("
                    (SELECT pm.meta_value as Feedback_Initials, object_id , rate, rtitle, excerpt from 
                        (SELECT object_id, meta.meta_value as rate, wposts.post_title as rtitle, wposts.post_excerpt as excerpt FROM $wpdb->term_relationships INNER JOIN $wpdb->posts wposts ON wposts.ID = object_id INNER JOIN $wpdb->postmeta meta ON meta.post_id = object_id WHERE term_taxonomy_id = '".$pcvalue."' AND wposts.post_type = 'reviews' AND wposts.post_status = 'publish' AND meta.meta_key = 'Feedback_Our_Rating' ORDER BY CAST(meta.meta_value as unsigned integer) DESC)
                    tb INNER JOIN wp_postmeta pm ON pm.post_id = tb.object_id WHERE pm.meta_key = 'Feedback_Initials')
");

Есть ли способ изменить запрос, чтобы он по-прежнему возвращал строку, если нет Feedback_Initials?

Единственный способ, которым я знаю, это сделать второй запрос, который не проверяет Feedback_Initials, а затем объединить два результата, удалив дубликаты.

...