プロジェクトのユーザー プロファイルの拡張に取り組んでおり、情報を追加しています。問題が発生したとき、国を追加していました。これは、必要なすべてのプロファイル データを選択するためのクエリです。
SELECT c.*, d.username, d.email, e.country_name
FROM user_profiles c, users d, country e
WHERE c.user_id = ".$id." AND d.id = ".$id."
AND e.country_name = (SELECT country_name FROM country WHERE id = c.country_id)
c.* は、user_profiles からすべての列を選択する必要があります。
これ$id
は、返されるプロファイルを選択するユーザーの ID です。問題は、登録をできるだけ簡単に保つために、そこに国のセレクターがないことです。したがって、このクエリが実行されると、user_profiles の列 country_id が空になります。つまり、country_name を返したい場合、クエリ結果が空になるため、プロファイル データは返されません。
CASE
これをorで書き直そうとしましLEFT JOIN
たが、何かが足りないと思います。country_id が null でないか調べたい、そうでない場合は this も選択country_name
しますcountry_id
。何か案は?
返信ありがとうございます。