首页 文章

获取关系表数据

提问于
浏览
0

我有以下表格:

member
id, firstName, lastName

team
id, name

teamMember
id, teamId, memberId

我试图访问关系表,以便我可以输出成员firstName和Lastname:

$sql = "SELECT member.id, member.firstName, member.lastName, team.id, teamMember.id, teamMember.memberId, teamMember.teamId 
        FROM teamMember 
        JOIN member
        JOIN team
        ON teamMember.memberId = member.id
        WHERE dashboardId = 1 AND team.id = 1";

我在team.id中设置了一个很难的值,所以我可以测试以确保它现在返回团队1的成员 .

所以这里的最终目标是我需要访问关系表,以便返回与ID中选择查询中设置的团队ID相关联的成员的名称 .

我正在努力获得输出需求 .

并返回如下值:

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "{$row['firstName']} {$row['lastName']}<br>";
    }
}

我看到的错误是:

Notice: Trying to get property of non-object in

其中指的是: if ($result->num_rows > 0) {

我想看的输出是 member 表中的成员 firstNamelastName

1 回答

  • 1

    您可能希望与所需团队ID关联的所有结果或行 . 但是,使用INNER JOIN,您只能为一个团队获得一行,因为这就是JOIN的工作方式 .

    相反,你应该使用这样的查询:

    SELECT member.id, member.firstName, member.lastName, team.id, teamMember.id, teamMember.memberId, teamMember.teamId 
            FROM teamMember 
            JOIN member
            ON teamMember.memberId = member.id
            WHERE dashboardId = 1 AND teamMember.teamId = 1"
    

    希望这会奏效 .

    但是,截至bool(false),您的查询也被破坏,无法获得所需的结果 . 在您的查询中,您已加入三个表并仅为一个表定义条件 . 这将是您的查询应该是什么样子

    "SELECT member.id, member.firstName, member.lastName, team.id, teamMember.id, teamMember.memberId, teamMember.teamId 
            FROM teamMember 
            JOIN member
            ON teamMember.memberId = member.id
            JOIN team
            ON teamMember.teamId= team.id
            WHERE dashboardId = 1 AND team.id = 1";
    

相关问题