2012-10-10 147 views
0

我试着做一个查询,看起来像这样:SQL IN子查询

SELECT `online`.user_id, users.profile_image_url, profile_info.profile_text, users.kind_of_relationship, users.gender_search, users.country 
FROM `online`, users, profile_info 
WHERE (`online`.user_id = users.id) 
AND (`online`.user_id = profile_info.profile_user_id) 
AND (users.user_age >= '25' AND users.user_age <= '38') 
AND (users.kind_of_relationship = 'Friendship') 
AND (users.gender = 'female') 
AND users.country IN (SELECT searching_countries.country FROM searching_countries, `online` WHERE `online`.user_id = searching_countries.user_id); 

和失败。

但是如果我运行此查询这样

SELECT `online`.user_id, users.profile_image_url, profile_info.profile_text, users.kind_of_relationship, users.gender_search, users.country 
FROM `online`, users, profile_info 
WHERE (`online`.user_id = users.id) 
AND (`online`.user_id = profile_info.profile_user_id) 
AND (users.user_age >= '25' AND users.user_age <= '38') 
AND (users.kind_of_relationship = 'Friendship') 
AND (users.gender = 'female') 
AND users.country IN ('Sweden', 'Austria'); 

那么查询工作正常。

另外,如果我只是运行查询:

SELECT searching_countries.country FROM searching_countries, `online` WHERE `online`.user_id = searching_countries.user_id 

即时得到结果瑞典,奥地利..

任何想法,为什么这IN(SELECT searching_countries.country FROM searching_countries,online WHERE online .user_id = searching_countries.user_id)不想工作?

预先感谢您!

+1

你是什么意思用'失败'?查询不会返回确切的结果?或者它有语法错误? –

+0

嗨, 它显示NULL。那就是问题 – Mensur

回答

0
UNION SELECT `online`.user_id, users.profile_image_url, profile_info.profile_text, users.kind_of_relationship, users.gender_search, users.country FROM `online`, users, profile_info WHERE (`online`.user_id = users.id) AND (`online`.user_id = profile_info.profile_user_id) AND (users.user_age >= '25' AND users.user_age <= '38') AND (users.kind_of_relationship = 'Friendship') AND (users.gender = 'female') AND users.country IN ('Sweden', 'Austria'); 
0

在子查询中添加ALIASonline表。

SELECT ... 
FROM... 
WHERE.... 
...AND (users.gender = 'female') 
AND users.country IN 
(
SELECT searching_countries.country 
FROM searching_countries, `online` x 
WHERE x.user_id = searching_countries.user_id 
) 
+0

这一个returs也Null =( – Mensur

0

我认为这样做的伎俩,现在是我的解决方案。

很抱歉,如果出现了任何missunderstanding但我还是想通过做在分享我如何解决我的问题。事情不需要是,有时complecated :)

SELECT `online`.user_id, users.user_name, users.profile_image_url, profile_info.profile_text, users.kind_of_relationship, users.gender_search, users.country 
FROM `online`, users, profile_info 
WHERE (`online`.user_id = users.id) 
AND (`online`.user_id = profile_info.profile_user_id) 
AND (users.user_age >= '25' AND users.user_age <= '38') 
AND (users.kind_of_relationship = 'Friendship') 
AND (users.gender = 'female') 
AND users.country IN (SELECT country FROM searching_countries WHERE user_id ='55');