Select 重复记录一次

Select once for duplicate record

这是我的表格,我需要从这些表格中获取数据。每个用户可以在多个 groups 类型下,例如 2, 3, 4

1)groups
|gp_id|gp_name|gp_status|
-------------------------------------
|  1  | Admin | Active |
|  2  | R&D   | Active |
|  3  | Sales | Active |
|  4  |  IT   | Active |

2)modules         (FK of table parent_modules)
|mod_id| mod_name|        pmod_id          |
---------------------------------------------
|  1   | name1   |            1            |
|  2   | name2   |            1            |
|  3   | name3   |            2            |
|  4   | name4   |            3            |
| ...  | name... |            3            |
mod_id = 5,6,7.. and so on

3)parent_modules
|pmod_id|    mod_name      |pmod_status|
-----------------------------------------
|  1    | Contact Us       |  Active    |
|  2    | Account Settings |  Active    |
|  3    | System Settings  |  Active    |

4)group_details
         (FK of table groups)  (FK of table modules) 
|gpd_id |    gp_id           |       mod_id          | base_gpd_rule_view/edit/update/insert |
-----------------------------------------------------------------------
|  1    |          3         |          1            |     on        |
|  2    |          3         |          2            |     on        |
|  3    |          3         |          3            |               |
|  4    |          3         |          4            |
|  5    |          3         |          5            |     on        |
|  6    |          3         |          6            |
|  7    |          3         |          7            |
|  8    |          4         |          6            |
|  9    |          4         |          7            |     on        |
|  10   |          4         |          8            |     on        |

我只需要 select 一次来自 group_details 的重复结果,这就是我想要的结果。

|    gp_id           |       mod_id          |
----------------------------------------------
|          3         |          1            |
|          3         |          2            |
|          3         |          3            |
|          3         |          4            | 
|          3         |          5            |
|          3         |          6            |
|          3         |          7            |
|          4         |          8            |

到目前为止,这是我在查询中所做的,但它显示了重复的记录。

//get user groups store in database. example group in database:2, 3, 4
$GroupList = explode(", ", $UserDetail['u_group']); 
foreach($GroupList as $a)
{
    $getParentModuleSQL = base_executeSQL("SELECT * FROM parent_modules WHERE pmod_status<>'Disable'" );
    $count1 = base_num_rows($getParentModuleSQL);

    while($ParentModuledata_row = base_fetch_array($getParentModuleSQL))
    if ($count1!= 0)
    {
         base_executeSQL("SELECT gp.gp_id AS ID FROM group_details AS gp, modules AS m WHERE m.pmod_id =". $ParentModuledata_row['pmod_id'] ." AND gp.gp_id=". $a ." AND gp.mod_id = m.mod_id" AND (base_gpd_rule_view='on' OR base_gpd_rule_add='on' OR base_gpd_rule_edit='on' OR base_gpd_rule_delete='on') GROUP BY gp.mod_id);
    }
}

我还是不明白你的问题。如果您希望所有模块 gp_id 都可以访问 - select * from group_details where gp_id = XX。如果你只想要每个模块,select * from modules