Alias与MySQL和PHP中的Join
我正在开发一个简单的ACL模块,在多对多关系方面遇到了一些问题 我有三张桌子: 团体Alias与MySQL和PHP中的Join,php,mysql,join,Php,Mysql,Join,我正在开发一个简单的ACL模块,在多对多关系方面遇到了一些问题 我有三张桌子: 团体 *id_组 名字 权限 *许可证 名字 重新许可组 *身份关系 团体 许可 所以我有这个疑问 SELECT * FROM acl_groups LEFT OUTER JOIN acl_RelPermissionsGroup ON acl_groups.id_group = acl_RelPermissionsGroup.group LEFT OUTER JOIN acl_permissio
- *id_组
- 名字
- *许可证
- 名字
- *身份关系
- 团体
- 许可
SELECT * FROM acl_groups
LEFT OUTER JOIN acl_RelPermissionsGroup
ON acl_groups.id_group = acl_RelPermissionsGroup.group
LEFT OUTER JOIN acl_permissions
ON acl_permissions.id_permission = acl_RelPermissionsGroup.permission
WHERE id_group > 0
如果我在phpmyadmin中执行查询,它会显示良好。因此,它会显示所有组是否具有权限,如果它们具有权限,它也会显示它们
我在这里看到一个问题,那就是name属性被重复。如何为每个字段设置别名?
但这不是问题所在
问题是,除了没有任何权限的组之外,执行mysqli_fetch_assoc执行得很好。这就是输出:
Array (
[id_group] => 2
[name] =>
[id_relation] =>
[group] =>
[permission] =>
[id_permission] =>
)
组ID很好,但由于字段是重复的,它会覆盖这些字段。此外,id_组和id_权限似乎分别与组和权限重复
我该怎么办?您应该写“选择groups.id\u group\u id,groups.name作为group\u name…”您必须明确地命名字段,如下所示
SELECT
ag.name as group_name
,ap.name as permission_name
,ar.`group` as permission_group_id
FROM acl_groups ag
LEFT OUTER JOIN acl_RelPermissionsGroup ar ON ag.id_group = ar.`group`
LEFT OUTER JOIN acl_permissions ap ON ap.id_permission = ar.permission
WHERE id_group > 0
不要忘记,
group
是一个保留字,需要像这样在backticks`group`
中引用。它可以工作!我可以选择显示多少字段。谢谢:D