如何通过GROUP BY在不同的表中显示SQL查询

时间:2012-12-10 21:28:13

标签: php sql wordpress foreach

好的,我的SQL查询是:

$image_results = $wpdb->get_results('SELECT * FROM uploaded_images GROUP BY album_title') ;

我现在要做的是为每个不同的* album_title *提供不同的结果集,在标签中输出相册标题,然后显示具有该专辑标题的项目列表。

这是我到目前为止所拥有的:

<?php foreach ($image_results as $result => $coll):?>
    <h4><?php echo $coll->album_title;?></h4>
    <?php foreach ( $coll->file_name as $i => $row ) : ?>
         <p><img src="http://example.com/<?php echo  $row->file_name; ?>"/></p>
    <?php endforeach; ?>
<?php endforeach; ?>

2 个答案:

答案 0 :(得分:1)

更新问题后,我认为这就是您要找的内容。请注意,我使用的是ORDER BY而不是GROUP BY。在使用SUMAVG或其他聚合函数之类的事物时使用分组。这可以在一个循环中处理:

$image_results = $wpdb->get_results('SELECT * FROM uploaded_images ORDER BY album_title');
$curTitle = '';
foreach($image_results as $result => $col) {
    if($curTitle !== $col['album_title']) {
        $curTitle = $col['album_title'];
        echo "<h4>$curTitle</h4>";
    }
    echo '<p><img src="' . $col['file_name'] . '" /></p>';
}

答案 1 :(得分:0)

简单方法:

$album_titles = array();
$image_results = $wpdb->get_results('SELECT * FROM uploaded_images GROUP BY album_title') ; 
foreach ($image_results as $result){
   $album_titles[ $result['album_title'] ][] = $result;
}

foreach( $album_titles as $title -> $images ){
 echo "<h4>".$title."</h4>";
   foreach( $images as $image ){
      echo "<br/>".$image['file_name'];
   }
}

所以你选择它,制作一个标题数组并输出具有相同标题的所有内容。