我们正在开发具有不同概念的社交网站的门户网站......但是为了建议连接,我们在mysql查询中遇到了... 我们正试图让用户使用similat数据...
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
运算符它返回所有用户..这些运算符的逻辑给出我知道的输出。但是对于这个问题我需要不同的建议才能有效地工作..否则查询可以用任何其他特定的操作符改变???
答案 0 :(得分:0)
您不需要所有这些WHERE IN
条件。您只需要where educonnect_user.user_id = 3
,因为educonnect_user
表与其他两个表educonnect_user_qualification
和educonnect_user_contact
一起加入,因此加入将确保为id=3
用户提供字段:type_of_institution
,college
,country
,..(和其他字段)存在于同一用户的其他两个表中,但您需要关心的是什么类型的连接根据您要从表格中选择的字段,您需要Left
,right
。所以我认为以下查询您正在寻找的内容:
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
答案 1 :(得分:0)
希望这会有所帮助::
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)