2

私は助けが必要です。bkeys ( id, bkey, ip, user_id )私は名前とwp_usermeta(はい、ワードプレスのテーブル、関心のあるフィールドはuser_id、 )を持つ2つのテーブルを持っていmeta_key and meta_valueます。必要なのは、bkeys + meta_valueの値からすべての行を選択することです。ここでkeyはニックネームなので、結果にはフィールドbkey、ip、meta_valueが含まれます。問題は、bkeysテーブルのipとuser_idがNULLになる可能性があるため(つまり、キーがまだどのユーザーにも取得されていない)、user_idがNULLの行が次のようなクエリで選択されないことです。

SELECT bkeys.bkey, bkeys.ip, wp_usermeta.meta_value
FROM bkeys
LEFT JOIN wp_usermeta ON ( bkeys.user_id = wp_usermeta.user_id )
WHERE meta_key='nickname'

私が必要としているのは、user_idがnullの場合でも、すべての行が選択されていることです。出来ますか?もしそうなら、どのように?

4

1 に答える 1

2

meta_key = 'nickname'ON句に移動してみてください。

SELECT bkeys.bkey, bkeys.ip, wp_usermeta.meta_value
FROM bkeys
LEFT JOIN wp_usermeta ON wp_usermeta.user_id = bkeys.user_id
                     AND wp_usermeta.meta_key = 'nickname'

LEFT JOINsを2フェーズフィルタリングと考えてください。

  • 最初にON条件を使用して行を結合しようとします。それ以外の場合は、NULLの行を結合します。
  • 条件で、結合された行またはNULL化された行をさらにフィルタリングできWHEREます。
于 2012-08-05T09:34:35.840 に答える