首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按日期将结果联系起来--甚至可以这样做吗?

按日期将结果联系起来--甚至可以这样做吗?
EN

Stack Overflow用户
提问于 2011-09-16 19:55:48
回答 2查看 57关注 0票数 0

好的,所以我会尽可能的详细和重点。

我有张桌子。MemberConnections

它有3列-- member1、member2、date

所以这就是我想不出的。

我想选择搜索日期。示例日期为6/14/11-6/17/11。然后我希望能够输入一个memberID,并获得该成员在日期范围内所做的所有连接的列表。

示例:

6/14/11

  • member1与member2

连接

6/15/11

member4

  • member4与
  • member2连接member6

6/16/11

member5

  • member1与
  • member2连接member11

6/17/11

member7

  • member6连接与member8

  • member16连接与member18

连接

6/18/11

member9

  • member5与
  • member3连接与member14

连接

希望这是合理的。

现在,当我输入日期和一个UserID时,它应该会返回所有从开始日期起就已经连接的用户I。

所以,按照我上面的例子。

名单将包括: member1、member2、member3、member4、member5、member6、member7、member8、member9、member10和member11

但是member12、member14、member16和member18不会显示,因为它们没有连接到被搜索的用户did中的任何人。

EN

回答 2

Stack Overflow用户

发布于 2011-09-16 20:50:48

代码语言:javascript
运行
复制
$member = $_GET['member'];
$date = $_GET['date'];

$firstRows = getMemberConnections($member)
$connections = array_merge($firstRows, getTree($firstRows));

$connectedMembers = array();
foreach ($connections as $connection)
{
    $connectedMembers[] = $connection['member1'];
    $connectedMembers[] = $connection['member2'];
}

$connectedMembers = array_unique($connectedMembers);
print_r($connectedMembers);


function getTree($rows)
{
    $subTree = array();
    foreach ($rows as $row)
    {
        $subTree[] = getMemberConnections($row['member1']);
        $subTree[] = getMemberConnections($row['member2']);
    }

    $subTree = array_unique($subTree);
    $subTree = array_merge($subTree, getTree($subTree));
    return $subTree;    
}

function getMemberConnections($member)
{
    global $date;
    $rows = array()
    $result = mysql_query("SELECT member1, member2 FROM MemberConnections WHERE (member1='$member' or member2='$member') and date >= '$date'") or die mysql_error();
    while ( $row = mysql_fetch_assoc($result) ) 
    {
        $rows[] = $row;
    }
    return $rows;
}
票数 0
EN

Stack Overflow用户

发布于 2011-09-16 21:12:59

假设相关的用户ID由$userID表示,日期范围由$lo_date$hi_date表示,那么您可以使用:

代码语言:javascript
运行
复制
SELECT Member1 AS Member
  FROM MemberConnections
 WHERE Member2 = $userID
   AND Date BETWEEN $lo_date AND $hi_date
UNION
SELECT Member2 AS Member
  FROM MemberConnections
 WHERE Member1 = $userID
   AND Date BETWEEN $lo_date AND $hi_date;

请注意,UNION自动消除任何副本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7449723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档