2012-01-24 7 views
1

私はMySQLデータベースで作業しています。Wordpress/MySqlクエリがJOINのLEFT部分からすべての結果を生成していない

私はポストがその値を持っている場合は、「SHORT_URL」の値と一緒にデータベース内のすべての記事の一覧が欲しい「SHORT_URL」

と呼ばれるWordPressのデータベースにカスタムフィールドを追加しました。それにもかかわらず、私はすべての投稿をしたい。次のクエリを作成し、LEFT結合を使用して、対応するカスタム値がなくてもすべての投稿を返すようにしましたが、機能しません。

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」値を持つ投稿のみのリストです。

完全なリストはどのように入手できますか?

答えて

2

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");