显示特定id';s来自表join-mysql


Showing certain id's from table join mysql

我创建了一个带有users表和teams表的表联接。用户只能属于一个团队,因此他们的帐户有一个team_id。

如何显示所有不同的组以及该组中的成员?

这是我的密码。目前,它只显示id为1的团队,用户表中有1个用户的team_id为1

<?php
include_once 'dbconfig.php';
if(!$user->is_loggedin())
{
 $user->redirect('index.php');
}
$user_id = $_SESSION['user_session'];
$stmt = $DB_con->prepare("SELECT * FROM teams
INNER JOIN users
ON teams.id=users.team_id
HAVING teams.id=1");
$stmt->execute();
$teamRow=$stmt->fetchall(PDO::FETCH_ASSOC);
?>
<h1>Teams</h1> 
<table>
 <tr> 
     <?php foreach($teamRow as $row): ?>   
        <th><?=$row['team_name']?></th>
        </tr> 
         </tr> 
<td> <?=$row['user_name']?></td>
 </tr>
<?php endforeach; ?>
<a href="home.php">Home</a>
</table> 

尝试此代码

1) 从查询中删除HAVING clause,只让用户使用simple JOIN并添加ORDER BY team_name ASC
2) 在php循环中执行逻辑

<table>
    <?php $teamName = ''; // assign teamName for loop ?>
    <?php foreach($teamRow as $row): ?>
    <?php
        if($row['team_name'] != $teamName) {
            $teamName = $row['team_name']; // set teamName for loop if not equal
    ?>
    <tr>
        <th><?=$row['team_name']?></th>
    </tr>
    <?php } ?> 
    <tr>
        <td><?=$row['user_name']?></td>
    </tr>
    <?php endforeach; ?>
    <tr>
        <td><a href="home.php">Home</a></td>
    </tr>
</table>

逻辑是:(用例)
-在循环中,如果$row team_name不等于teamName,则显示teamName并设置
-然后显示user_name
-再次循环,$row team_name等于teamName,因此不要再次显示teamName

希望它能帮助