2013-01-05 185 views
0

没有结果表比方说,我有这样的SQL行:Mysql的返回结果,如果2

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场信息该用户?

+0

可能与左连接? – vodich

回答

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是什么,所以你需要改变这种状况。

+0

我会尝试身份证,让你知道! thx – simon

+0

嗯......看来我没有工作。这是完整性的代码: SELECT(东西) FROM \t'users' LEFT JOIN'profile_images' \t ON'users'.'user_id' ='profile_images'.'user_id' WHERE \t'profile_images '.'user_id' ='“。$ uid。”' AND \t'users'.'user_id' ='“。$ uid。”' LIMIT 1 – simon

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的外键字段等于第一个表的主键字段的详细信息页面,并从第一个表中选择行,使得从第二个表中没有匹配的行。

在您提供的查询中,没有加入标准,因此它将是笛卡尔产品 - 每行user_data与每行user_profile_image合并。

+0

如果我将IS null设置为'6'(用户ID 6没有配置文件图像)然后Sql什么也没有返回。如果我使用user_id 4(具有图像的用户)sql返回行:/ – simon

+0

什么是外键字段?用什么键将'user_profile_image'匹配到'user_data'? – Colselaw

+0

目前没有外键,这是必要的吗? – simon

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