Wordpress / MySql запрос не дает всех результатов из левой части JOIN - PullRequest
1 голос
/ 24 января 2012

Я работаю в базе данных MySQL.

Я добавил настраиваемое поле в базу данных Wordpress под названием "short_url"

Я хочу получить список всех сообщений в базе данных вместе сзначение для "short_url", если сообщение имеет это значение.Но я все же хочу все посты.Я составил следующий запрос и использовал левое объединение, чтобы получить все сообщения, даже если нет соответствующего пользовательского значения, но оно не работает.

SELECT
    wp_posts.post_title
    , wp_posts.post_date
    , wp_postmeta.meta_value
FROM
    wp_posts
    LEFT JOIN wp_postmeta
        ON ( wp_posts.ID = wp_postmeta.post_id)
WHERE (wp_postmeta.meta_key ="short url");

Этот запрос возвращает 12 результатов, чтосколько статей имеют пользовательское значение, но в моей базе данных 193 сообщения.

Почему я получаю ответ, это список только сообщений, имеющих значение "short_url"?

Как можноЯ получил полный список?

1 Ответ

2 голосов
/ 24 января 2012

Необходимо переместить условие из предложения WHERE в предложение ON. Условия в предложении WHERE влияют на все результаты. Условия в предложении ON влияют на JOIN.

SELECT
    wp_posts.post_title,
    wp_posts.post_date,
    wp_postmeta.meta_value
FROM
    wp_posts
    LEFT JOIN wp_postmeta
        ON (wp_posts.ID = wp_postmeta.post_id) AND
           (wp_postmeta.meta_key ="short url");
...