Условное условие MySQL - PullRequest
       2

Условное условие MySQL

4 голосов
/ 11 апреля 2011

В основном, когда поле meta_key равно 'location', я хочу добавить дополнительное условие where для сравнения на основе этого местоположения.

Я пробовал это как с операторами Case, так и с IF, но могуПохоже, это не сработало, есть идеи, где я ошибаюсь?

$query = "
SELECT wp_posts.ID, wp_posts.post_title, wp_posts.post_type,
wp_postmeta.meta_key, wp_postmeta.meta_value, wp_postmeta.post_id,
wp_term_relationships.object_id, wp_term_relationships.term_taxonomy_id, 
wp_term_taxonomy.term_id,
wp_terms.term_id, wp_terms.name

FROM wp_posts

/* Join Post Meta Table */
JOIN wp_postmeta
ON wp_posts.ID = wp_postmeta.post_id

/* Join Term Relationships Table to get the taxonomy id */
JOIN wp_term_relationships
ON wp_posts.ID = wp_term_relationships.object_id

/* Join Term Taxonomy Table to get the Term ID */
JOIN wp_term_taxonomy
ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id

/* Finally Join to the Terms table to get the Category Name *sigh* */
JOIN wp_terms
ON wp_term_taxonomy.term_id = wp_terms.term_id

WHERE post_type = 'listing' AND
wp_postmeta.meta_key IN ('locations', 'email', 'phone-number')";

if(isset($location)) {

    $query .= "
    IF wp_postmeta.meta_key='location'
        THEN AND wp_postmeta.meta_value LIKE '".mysql_real_escape_string($location)."'
    END IF";

}

Спасибо и дайте мне знать, если я не объяснил достаточно ясно!

Ответы [ 2 ]

13 голосов
/ 11 апреля 2011
if(isset($location)) {
        $query .= " AND 
        CASE 
         WHEN wp_postmeta.meta_key='location' THEN wp_postmeta.meta_key 
         LIKE '".mysql_real_escape_string ($location)."'   
         ELSE 1=1
        END ";
      }
3 голосов
/ 11 апреля 2011

простое решение будет

WHERE 
    (meta_key = 'Location' AND Location = 'UK') OR meta_key <> 'Location'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...