【问题标题】:how to find necessary values of a unique variable from two table如何从两个表中找到唯一变量的必要值
【发布时间】:2016-05-30 10:25:24
【问题描述】:

1) 我有一个名为“plan_info_upload”的表,类似于:

site_id site_name   2G_bw   3G_bw   route_path
1       MBCGP1      11      30      MBLMA1>MBSMGR
2       BOPBG2      12      22      BOPBG2>BOBET16
3       BOPCB1      11      0       BOBET16>BOGBT1>BOPBG2>BOBET16
4       BOSBB1      14      25      BOSBB1>BOKDG1>BOBET16>BOGBT1

2) & 另一个名为“hop_without_router”的表,类似于:(将第一个表中的 route_path 划分为 hop)

hop_id  hop_1          hop_2         hop_3..... hop_9    site_name  hop_count
1      MBLMA1>MBSMGR                                     MBCGP1       1
2      BOPBG2>BOBET16                                    BOPBG2       1
3      BOBET16>BOGBT1 BOGBT1>BOPBG2  BOPBG2>BOBET16      BOPCB1       3      
4      BOSBB1>BOKDG1  BOKDG1>BOBET16 BOBET16>BOGBT1      BOSBB1       3

3) 我从第二张桌子上找到了 unique_hop。查询是...

$sql = "SELECT DISTINCT (hops.hop_route) FROM (
                SELECT DISTINCT hop_1 as hop_route FROM hop_without_router
                 UNION 
                SELECT DISTINCT hop_2 as hop_route FROM hop_without_router
                 UNION 
                SELECT DISTINCT hop_3 as hop_route FROM hop_without_router
                 UNION 
                SELECT DISTINCT hop_4 as hop_route FROM hop_without_router
                 UNION 
                ......
                SELECT DISTINCT hop_9 as hop_route FROM hop_without_router) as hops";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
    while($row = $result->fetch_assoc()) 
    {
       $hop_route = $row['hop_route'];
       echo $hop_route;
    }
}

结果如下:

serial_id   unique_hop
1           MBLMA1>MBSMGR
2           BOPBG2>BOBET16
3           BOBET16>BOGBT1
4           BOGBT1>BOPBG2
5           BOSBB1>BOKDG1
6           BOKDG1>BOBET16

4) 现在我知道每跳有多少 2G_bw 和 3G_bw 以及它们的总带宽。结果会是这样。

unique_hop     no_of_2G   no_of_3G   total_2G_bw   total_3G_bw
MBLMA1>MBSMGR   1          1          11           30
BOPBG2>BOBET16  2          2          23           52
BOBET16>BOGBT1  2          2          25           55
BOGBT1>BOPBG2   1          0          11           0
BOSBB1>BOKDG1   1          1          14           25
BOKDG1>BOBET16  1          1          14           25

我完成了第三步。但无法匹配或完成第 4 步。如何使用表格完成第四步?请有人可以帮我完成这个。提前致谢。

**一个独特的跃点可能有多个站点名称。 & 有可能一跳没有任何 3g 带宽。

【问题讨论】:

    标签: php mysql unique


    【解决方案1】:

    可能是这样的

    SELECT hops.hop_route,count(plan_info_upload.*) as no_of_2G, SUM(plan_info_upload.2G_bw) as total_2G_bw FROM(
    SELECT DISTINCT (hops.hop_route) as hop_route FROM (
                    SELECT DISTINCT hop_1 as hop_route FROM hop_without_router
                     UNION 
                    SELECT DISTINCT hop_2 as hop_route FROM hop_without_router
                     UNION 
                    SELECT DISTINCT hop_3 as hop_route FROM hop_without_router
                     UNION 
                    SELECT DISTINCT hop_4 as hop_route FROM hop_without_router
                     UNION 
                    ......
                    SELECT DISTINCT hop_9 as hop_route FROM hop_without_router) as hops ) as unique_hops )  LEFT JOIN plan_info_upload ON hops.hop_route = plan_info_upload.route_path
    

    【讨论】:

    • 我怎样才能找到 no_of_3G & total_3G_bw??? &这个查询让我说“试图获取非对象的属性”时出错...... :(
    • 您只需将它添加到 3g 后面,就像制作 3g 一样,计算总数和总和以计算所有结果的总和。尝试在你的 mysql(mysqlyog、navicat、phpmyadmin 等)上直接执行这个查询,然后告诉我那里有什么错误
    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多