Php Mysql内部连接查询给出一行三次

Php Mysql内部连接查询给出一行三次,php,mysql,pdo,inner-join,Php,Mysql,Pdo,Inner Join,谢谢你的阅读 我正在努力学习内心的联结和联结。我的目的是比较,如果用户创建的社区在CommunityMembers表中也被标记为管理员(我不确定内部联接是否实现了这一点),并从社区表中获取与CommunityID相关的所有其他社区信息(据我所知,内部联接是可能的) 我有两张桌子,分别是Community和CommunityMembers 该结构用于社区(它有其他数据,如日期、内容等): 社区成员 CmID - UserID - Slug - Power 1

谢谢你的阅读

我正在努力学习内心的联结和联结。我的目的是比较,如果用户创建的社区在CommunityMembers表中也被标记为管理员(我不确定内部联接是否实现了这一点),并从社区表中获取与CommunityID相关的所有其他社区信息(据我所知,内部联接是可能的)

我有两张桌子,分别是Community和CommunityMembers

该结构用于社区(它有其他数据,如日期、内容等):

社区成员

 CmID - UserID  -      Slug         - Power
   1  -   2     -      video        - admin
   2  -   2     -      funny        - admin
   3  -   4     -      picture      - admin
我的php代码:(
$\u SESSION['UserID']
是2)

echo$sql->rowcount()打印
六,

你能帮个忙吗?为什么要打印三次相同的东西?我的解决方案是否正确地检查用户是否创建了社区,社区成员中是否标记为admin,或者我是否需要检查它

谢谢

$sql = $dbc->prepare(" SELECT DISTINCT cm.*, com.* 
                   FROM Community com
                   INNER JOIN CommunityMembers cm ON cm.UserID = com.CreatedByUser
                   WHERE cm.UserID = '" . $_SESSION['UserID'] . "'");
选择不同的


如果您只需要知道它的管理员,请不要从CommunityMembers中获取所有字段。试试这个

$sql = $dbc->prepare(" SELECT DISTINCT cm.Power, com.*
                       FROM Community com
                       LEFT JOIN CommunityMembers cm ON cm.UseriID=com.CreaterByUser
                       WHERE cm.UserID = '" . $_SESSION['UserID'] . "'");
没有测试它,但即使没有DISTINCT,它也应该可以工作。

试试这个

$sql = $dbc->prepare(" 
SELECT cm.*, com.* 
FROM Community com
INNER JOIN CommunityMembers cm ON cm.UserID = com.CreatedByUser
WHERE cm.UserID = '" . $_SESSION['UserID'] . "'

GROUP BY com.CreatedByUser
");

如果选择两个表result
select cm.*,com.*
它将返回所有不同的对,因此请尝试只选择所需的specifics字段


PS:完整的结果是什么,我的意思不仅仅是字段
slug

@sskoko它没有改变任何东西结果是一样的。如果你让输出等于$data['slug',]而不是附加它,会发生什么?或者如果您只是回显$data['Slug']?
$sql = $dbc->prepare(" SELECT DISTINCT cm.*, com.* 
                   FROM Community com
                   INNER JOIN CommunityMembers cm ON cm.UserID = com.CreatedByUser
                   WHERE cm.UserID = '" . $_SESSION['UserID'] . "'");
$sql = $dbc->prepare(" SELECT DISTINCT cm.Power, com.*
                       FROM Community com
                       LEFT JOIN CommunityMembers cm ON cm.UseriID=com.CreaterByUser
                       WHERE cm.UserID = '" . $_SESSION['UserID'] . "'");
$sql = $dbc->prepare(" 
SELECT cm.*, com.* 
FROM Community com
INNER JOIN CommunityMembers cm ON cm.UserID = com.CreatedByUser
WHERE cm.UserID = '" . $_SESSION['UserID'] . "'

GROUP BY com.CreatedByUser
");