![](/img/trans.png)
[英]MySQL query for getting data from different table and using it for distance calculations
[英]mysql query for getting related data from different table for suggested connections
我们正在开发具有不同概念的类似于社交网站的门户...但是为了进行建议的连接,我们在mysql查询中感到震惊...我们正试图吸引具有类似数据的用户...
SELECT u.*
FROM educonnect_user u
LEFT OUTER JOIN educonnect_user_qualification q ON u.id = q.user_id
LEFT OUTER JOIN educonnect_user_contact a1 ON u.id = a1.user_id
WHERE q.type_of_institution in
(
SELECT type_of_institution
FROM educonnect_user_qualification qi
WHERE qi.user_id = 3
)
AND q.college in
(
select college
from educonnect_user_qualification qc
where qc.user_id = 3
)
AND q.country in
(
select country
from educonnect_user_qualification qco
where qco.user_id = 3
)
AND a1.country in
(
select country
from educonnect_user_contact cc
where cc.user_id = 3
)
AND a1.state in
(
select state
from educonnect_user_contact cs
where cs.user_id = 3
)
像这样我要联接10个表..但是问题是我给AND
运算符的地方都没有生成结果,如果我给OR
运算符,它将返回所有用户..其逻辑,这些运算符将给出我知道的输出..但是对于这个问题我需要可以有效工作的不同建议。否则,可以使用任何其他特定运算符来更改查询???
您不需要所有这些WHERE IN
条件。 您只需要where educonnect_user.user_id = 3
因为educonnect_user
表与其他两个表educonnect_user_qualification
和educonnect_user_contact
,因此该educonnect_user_contact
将确保id=3
的用户使用以下字段: type_of_institution
, college
, country
,..(和其他字段)存在于同一用户的另外两个表中,但是您需要根据需要从表中选择哪些字段( Left
, right
考虑所需的Left
。 所以我认为以下查询您在寻找什么:
SELECT u.*
FROM educonnect_user u
LEFT OUTER JOIN educonnect_user_qualification q ON u.id = q.user_id
LEFT OUTER JOIN educonnect_user_contact a1 ON u.id = a1.user_id
where u.user_id = 3
希望这会有所帮助::
SELECT u.*
FROM educonnect_user u
LEFT OUTER JOIN educonnect_user_qualification q ON u.id = q.user_id
LEFT OUTER JOIN educonnect_user_contact a1 ON u.id = a1.user_id
left join educonnect_user_qualification qi on (q.type_of_institution=qi.type_of_institution and qi.user_id=3)
left join educonnect_user_qualification qc on (q.college=qc.college and qc.user_id=3)
left join educonnect_user_qualification qco on (q.country=qco.country and qco.user_id=3)
left join educonnect_user_contact cc on (a1.country=cc.country and cc.user_id=3)
left join educonnect_user_contact cs on (a1.state=cs.state and cs.user_id=3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.