2013-01-05 126 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