1
(对不起我的英文不好,我会尽量最清晰)获取X结果与多个表
我想选择5个对话(在一个不确定的数字,可能有5个或300对话)的一个用户在MySQL表中,并且对于其中的每个用户,我想选择所有在其中通话的用户。
在一个奇妙的世界中,我想用一个查询来完成它。
我的查询看起来像(表是在法国,PLZ不要伤害我):
SELECT mc.mc_id, mc.mc_sujet, mc.mc_statut,
miu.mi_ustatut as uself_statut, miu.mi_datelecture as uself_datelecture,
mi.mi_uid, mi.mi_ustatut, mi.mi_datelecture,
u.u_pseudonyme
FROM msg_individus as miu
LEFT JOIN msg_conversations as mc ON mc.mc_id = miu.mi_mcid
LEFT JOIN msg_individus as mi ON mi.mi_mcid = mc.mc_id
LEFT JOIN u_individus as u ON u.u_id = mi.mi_uid
WHERE miu.mi_uid = :u_id
哪里msg_individus
是表与会话的参与者, msg_conversations
是会话(ID的表,主题,状态), u_individus
是包含用户信息的表格。
只选择5这些谈话中,我又补上一句
GROUP BY mc.mc_id,
LIMIT 0,5
但当然,每个会话只能有一个用户给出的这个样子。
我也试着写GROUP BY mc.mc_id, mi.mi_uid
但这吧,像没有书面方式在GROUP BY条件,返回5次迭代,如:
(Conversation 1 has two users, conversation 2 has one, conversation 3 has four)
Iteration 1 : conversation 1, user 1
Iteration 2 : conversation 1, user 2
Iteration 3 : conversation 2, user 1
Iteration 4 : conversation 3, user 1
Iteration 5 : conversation 3, user 2
我想要的是得到5个交谈的所有提交的数据(无论什么数用户等)
我想我将不得不使用两个查询(获得5个对话后,我会得到每个对话的用户),但也许你们可以用你的知识点亮我。
Thx。
它似乎按预期工作!对于我的信息(因为我是一个noob),为什么内连接比外连接好?无论如何,这就是Thx! – Vae
@Vae。 。 。有两个原因。首先是你应该使用最符合你意图的“加入”。第二个是内部联接为优化器提供了更多优化性能的机会。 –
Thx很多为您的信息。非常好。 – Vae