doupu3635 2015-05-08 08:11
浏览 25
已采纳

显示结果无重复

Here is my sample database.

1)base_groups
|base_gp_id| base_gp_name  |
----------------------------
|    1     |   Technician  | 
|    2     |   Sales       | 
|    3     |   R&D         |
|    4     |   Testing     | 

2)base_subgroup
                            (FK of base_groups)
| base_id  |   base_name   |    base_gp_id    |
-----------------------------------------------
|    1     |    group1     |    1, 2, 3       |
|    2     |    group2     |       3          | 
|    3     |    group3     |      3, 4        |

My question is how am I going to display the group name only once. Thanks in advance.
Here is my code and the result.

<?php
//$groupInfo consists of base_subgroup ID : 1,2 and 3
foreach($groupInfo as $value)
{
    $group_sql = base_executeSQL("SELECT * FROM base_subgroup WHERE base_name='".$value."'");
    while($row = base_fetch_array($group_sql))
    if(base_num_rows($group_sql) != 0)
    {
        $group_data = explode(", ",$row['base_gp_id']);

        foreach($group_data as $data)
        {
            $group_query = base_executeSQL("SELECT * FROM base_groups WHERE base_gp_id='".$data."'");
            while($row_group = base_fetch_array($group_query))              
                echo $row_group['base_gp_name'] . "<br>";
        }
    }
}

Output of the code above:

Technician
Sales
R&D
R&D
R&D
Testing

But this is the result that I have to show:

Technican
Sales
R&D
Testing
  • 写回答

2条回答 默认 最新

  • duanfu2562 2015-05-08 08:13
    关注

    Update

    $group_data = array();
    foreach($groupInfo as $value)
    {
        $group_sql = base_executeSQL("SELECT * FROM base_subgroup WHERE base_name='".$value."'");
    
        while($row = base_fetch_array($group_sql))
        if(base_num_rows($group_sql) != 0)
        {
            $group_data = array_merge($group_data, explode(", ",$row['base_gp_id']));
        }
    }
    $group_data = array_unique($group_data);
    $group_query = base_executeSQL("SELECT * FROM base_groups WHERE base_gp_id IN (". implode(',', $group_data) .")");
    while($row_group = base_fetch_array($group_query)) {              
        echo $row_group['base_gp_name'] . "<br>";
    }
    

    When you need a single column to work with then dont fetch them with *, use fetch that column only..

    Previously

    Add a Group By clause. It will fetch unique result from the database. Try with -

    "SELECT * FROM base_groups WHERE base_gp_id='".$data."' GROUP BY base_gp_name"
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!