Mysql 选择不同的table4\u id、table3\u id和table2\u id

Mysql 选择不同的table4\u id、table3\u id和table2\u id,mysql,sql,join,distinct,Mysql,Sql,Join,Distinct,我有四张桌子。我加入他们使用内部和右连接。我正在尝试选择不同的table4\u id、table3\u id和table2\u id 下面是连接4个表的查询 <?php $query = mysqli_query($con, "SELECT table1.table1_id, table1.firstname,

我有四张桌子。我加入他们使用内部和右连接。我正在尝试选择不同的table4\u id、table3\u id和table2\u id

下面是连接4个表的查询

      <?php 
             $query = mysqli_query($con, 
                "SELECT 
                      table1.table1_id, 
                      table1.firstname, 
                      table1.middlename, 
                      table1.lastname, 
                      table1.extension_name, 
                      table2.table2_id, 
                      table3.table3_id, 
                      table4.table4_id 
                 FROM table1
                 INNER JOIN table2
                      ON table1.table1_id = table2.table2_id
                 RIGHT JOIN table3
                      ON table2.table2_id = table3.table3_id
                RIGHT JOIN table4
                      ON table3.table3_id = table4.table4_id") or die(mysqli_error($con));

       ?>

获取结果时进行编码

          <?php while($row = mysqli_fetch_array($query)): ?>
               <tr>
                    <td><?php echo $row['table4_id'];?></td>
                    <td><?php echo $row['table3_id'];?></td>
                    <td><?php echo $row['table2_id'];?></td>
                    <td><?php echo $row['firstname'] . " " . $row['middlename'] . " " . $row['lastname'] . " " . $row['extension_name'];?></td>
                </tr>
           <?php endwhile; ?>
$row = mysqli_fetch_array($query));

for($i=0; $row = $result->fetch(); $i++){

           <tr>
                <td><?php echo $row['table4_id'];?></td>

                <td><?php echo $row['table3_id'];?></td>

                <td><?php echo $row['table2_id'];?></td>

                <td><?php echo $row['firstname'] . " " .$row['middlename'] . " " . $row['lastname'] . " " . $row['extension_name'];?></td>
            </tr>
       }

结果

          <?php while($row = mysqli_fetch_array($query)): ?>
               <tr>
                    <td><?php echo $row['table4_id'];?></td>
                    <td><?php echo $row['table3_id'];?></td>
                    <td><?php echo $row['table2_id'];?></td>
                    <td><?php echo $row['firstname'] . " " . $row['middlename'] . " " . $row['lastname'] . " " . $row['extension_name'];?></td>
                </tr>
           <?php endwhile; ?>
$row = mysqli_fetch_array($query));

for($i=0; $row = $result->fetch(); $i++){

           <tr>
                <td><?php echo $row['table4_id'];?></td>

                <td><?php echo $row['table3_id'];?></td>

                <td><?php echo $row['table2_id'];?></td>

                <td><?php echo $row['firstname'] . " " .$row['middlename'] . " " . $row['lastname'] . " " . $row['extension_name'];?></td>
            </tr>
       }
我想要实现的形象

我想我的问题不对

我尝试了
选择DISTINCT
-相同的结果

我尝试了
groupby
——它与table4\u id、table3\u id和table2\u id列一起工作,但在“Name”列下,它只显示一条记录。它应该显示查询中具有table2\u id的所有名称。聚合函数不存在,因此不需要group by

如果您想要不同的值,则必须在选择中添加此子句

"SELECT      DISTINCT
                  table1.table1_id, 
                  table1.firstname, 
                  table1.middlename, 
                  table1.lastname, 
                  table1.extension_name, 
                  table2.table2_id, 
                  table3.table3_id, 
                  table4.table4_id 
             FROM table1
             INNER JOIN table2
                  ON table1.table1_id = table2.table2_id
             RIGHT JOIN table3
                  ON table2.table2_id = table3.table3_id
            RIGHT JOIN table4
                  ON table3.table3_id = table4.table4_id"

您可以尝试使用for循环来循环表格内容

          <?php while($row = mysqli_fetch_array($query)): ?>
               <tr>
                    <td><?php echo $row['table4_id'];?></td>
                    <td><?php echo $row['table3_id'];?></td>
                    <td><?php echo $row['table2_id'];?></td>
                    <td><?php echo $row['firstname'] . " " . $row['middlename'] . " " . $row['lastname'] . " " . $row['extension_name'];?></td>
                </tr>
           <?php endwhile; ?>
$row = mysqli_fetch_array($query));

for($i=0; $row = $result->fetch(); $i++){

           <tr>
                <td><?php echo $row['table4_id'];?></td>

                <td><?php echo $row['table3_id'];?></td>

                <td><?php echo $row['table2_id'];?></td>

                <td><?php echo $row['firstname'] . " " .$row['middlename'] . " " . $row['lastname'] . " " . $row['extension_name'];?></td>
            </tr>
       }
$row=mysqli_fetch_数组($query));
对于($i=0;$row=$result->fetch();$i++){
}

您是否尝试过使用
分组依据
?尝试使用
分组依据表格4\u id、表格3\u id、表格2\u id
为每个组
表格4\u id、表格3\u id、表格2\u id
,您要获取哪条记录?右键连接。。。大多数人觉得这些太令人困惑了。为了使代码更易于阅读和维护,请切换到left join!(即“主表连接可选数据”,而不是“可选数据连接主表”。)