Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用SQL将行元素分组为一列_Php_Mysql_Pdo - Fatal编程技术网

Php 使用SQL将行元素分组为一列

Php 使用SQL将行元素分组为一列,php,mysql,pdo,Php,Mysql,Pdo,我当前的表是这样从数据库中获取内容的,但我希望合并这些行,以便将所有房间首选项显示在一行中,而不是多行中。我该怎么做呢?因此,下表只有两行 正在从ts_roompref推断房间首选项信息 以下是我目前的代码: $sql = "SELECT * FROM ts_request INNER JOIN ts_day ON ts_request.day_id = ts_day.id INNER JOIN ts_period ON

我当前的表是这样从数据库中获取内容的,但我希望合并这些行,以便将所有房间首选项显示在一行中,而不是多行中。我该怎么做呢?因此,下表只有两行

正在从ts_roompref推断房间首选项信息

以下是我目前的代码:

    $sql = "SELECT 
            *
    FROM ts_request
    INNER JOIN ts_day
    ON ts_request.day_id = ts_day.id
    INNER JOIN ts_period
    ON ts_request.period_id = ts_period.id
    INNER JOIN ts_allocation
    ON ts_request.id = ts_allocation.request_id
    INNER JOIN ts_roompref
    ON ts_request.id = ts_roompref.request_id
    WHERE ts_request.round=:round
    AND ts_request.dept_id=:dept
    ORDER BY ts_request.module_id ASC";
    }
    $stm = $pdo->prepare( $sql );
    $stm->execute( array( ':round' => 'P', ':dept' => $loggedin_id  ) );
    $rows = $stm->fetchAll();   

        foreach ($rows as $row) 
    {               
    echo '<tr align="center">'; 
    echo '<td>'.$row['module_id'].'</td>';
    echo '<td>'.$row['day'].'</td>';    
    echo '<td>'.$row['period'].'</td>';
    echo '<td>';
    if ($row['room_id']=="0")
    {
    echo "Any";
    }
    else
    {
    echo $row['room_id'];
    }
    echo '</td>';           
    echo '<td>'.$row['status'].'</td>';
    echo '</tr>';
$sql=“选择
*
来自ts_的请求
内联祖日
在ts_request.day_id=ts_day.id时
内连接t_周期
在ts_请求时。period_id=ts_period.id
内部连接ts_分配
ON ts_request.id=ts_allocation.request_id
内部连接ts_roompref
在ts_request.id=ts_roompref.request_id上
其中ts_request.round=:round
和ts_请求。dept_id=:dept
按ts_request.module_id ASC订购”;
}
$stm=$pdo->prepare($sql);
$stm->execute(数组(':round'=>'P',':dept'=>$loggedin_id));
$rows=$stm->fetchAll();
foreach($行作为$行)
{               
回声';
回显'.$row['module_id'].';
回显“.$row['day']”;
回显'.$row['period'].';
回声';
如果($row['room_id']==“0”)
{
呼应“任何”;
}
其他的
{
echo$row['room_id'];
}
回声';
回显'.$row['status'].';
回声';

好吧,我想你应该试着用SQL来做,但是如果你想用PHP来做,你可以在行上循环,观察模块代码的变化

$newrows = array()
$tmpCode = ""
foreach $rows as $row
   if $tmpCode != $row['module_code'] {
       $tmpCode = $row['module_code']

       $newrows[] = $row 
   } else {
       $newrows[count($newrows) - 1]['room_preference'] .= $row['room_preference']
   }
}

…很粗略,但你明白了。

如果你想在SQL中这样做,你不能在
room\u首选项上进行分组,并按其他4个字段分组吗?

尝试了如下smth:
按ts\u请求分组。最后是day\u id
吗?问题是由
echo$row['room\u id']引起的
是EchoydWhat systems(系统)说的吗/你得到了什么错误?我没有得到任何错误,我只是希望每一行按请求id分组,而不是所有行单独输出一行