0

この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 フィールドから情報を返すようにするにはどうすればよいですか?

4

3 に答える 3

1

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 が何であるかわからないので、変更する必要があります。

于 2013-01-05T16:31:37.780 に答える
1
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ます。

于 2013-01-05T16:31:51.193 に答える
0

これを試して:

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

于 2013-01-10T14:31:10.820 に答える