这是一个加入的工作

时间:2012-02-09 18:47:08

标签: mysql join

只是寻找更好的方向,而不是解决方案。

我有两张桌子 - A,B

表A具有IP地址和时间(时间将等于或在开始时间和结束时间之间)

表B包含用户名,开始时间,结束时间,IP地址

这项工作,我试图找出表A中的IP地址和时间与表B中的用户名相对应。

更一般地说,谁(用户名)在特定时间使用特定的IP地址。

假设我的解释有意义,这看起来像使用连接的东西可以在两个表之间完成吗?如果不是,那么下一个最佳步骤是什么。我试图避免从一个表到另一个表的大量手动查询。

欢迎任何方向,谢谢。

3 个答案:

答案 0 :(得分:6)

是的,加入是合适的。条件需要是一个复合条件,它匹配ip地址和时间约束。

select B.username, A.ipaddress, A.time
 from A inner join B on A.ipaddress = B.ipaddress 
                        and A.time between B.starttime and B.endtime

答案 1 :(得分:1)

是的 - 这正是你应该使用JOIN的那种情况。

    SELECT x, y, z
      FROM a
INNER JOIN b ON a.ip_address = b.ip_address

答案 2 :(得分:-1)

SELECT *
FROM a
INNER JOIN b
WHERE a.ip_address = b.ip_address 
    AND b.starttime <= a.time 
    AND a.time <= b.endtime