MySQL表之间的关系

时间:2013-02-17 17:27:01

标签: mysql join

我有3个表:users,logs,log_entries。一个用户有很多日志,一个日志有很多条目。它看起来像这样

zzz

假设有100个用户,每个用户有1000个日志,每个日志有1000个条目。这意味着log_entries表中将有100 000 000行,当我想从日期x检查日志时,它需要从100 000 000行过滤我想要的数据。

请问这个问题的正确解决方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用INNER JOINCONCAT

SELECT * 
FROM Users U
  INNER JOIN Logs L ON U.UserId = L.UserId
  INNER JOIN Log_Entries LE ON 
     CONCAT(L.UserId,'|',L.Session_Start) = LE.UserIdSession_Start

但我会建议更改你的表结构 - 这很奇怪。至少,将Log_Id添加到Logs表中,并在Log_Entries表中也包含该字段。