このSQL行があるとしましょう:
SELECT (something)
FROM user_data, user_profile_image
WHERE user_data.user_id='6' (AND user_profile_image.user_id='6')
そのユーザーに関連する user_profile_image に含まれるデータがない場合、user_data フィールドから情報を返すようにするにはどうすればよいですか?
JOINを使用する必要があります
SELECT u.*,i.user_profile_image FROM user_data u LEFT JOIN `USER_PROFILE_IMAGE_TABLE` i ON i.user_id=u.user_id WHERE u.user_id='6'
USER_PROFILE_IMAGE_TABLE が何であるかわからないので、変更する必要があります。
SELECT something
FROM user_data
LEFT JOIN user_profile_image
ON user_profile_image.user_id = user_data.user_id
WHERE user_data.user_id = '6'
AND user_profile_image.user_id IS NULL;
LEFT JOIN
最初のテーブルの主キー フィールドと等しい外部キー フィールドの詳細ページを作成し、最初のテーブルから行を選択して、2 番目のテーブルから一致する行がないようにします。
あなたが与えたクエリには、結合基準がないため、デカルト積になります。 のすべての行が のすべての行とuser_data
マージされuser_profile_image
ます。
これを試して:
SELECT u.user_id, u.user_name, IFNULL(up.user_id, 'No Data In user_profile_image') UserId,
IFNULL(up.user_image_id, 'No Data In user_profile_image') user_image_id
FROM user_data u
LEFT JOIN user_profile_image up ON u.user_id = up.user_id
WHERE u.user_id = 6;
このリンクを確認してくださいSQL FIDDLE DEMO