PHP如何在mysql查询列表中回显每组的第一个值

标签 php mysql

为了更好地解释我的情况,请看一下这个mokeup查询结果:

Category    Item
cat1        Item 1
cat1        Item 2
cat1        Item 3
cat23       Item x
cat23       Item y
cat23       Item z
X           apples
X           oranges
X           bananas
and so on....

我正在从 mysql 数据库中提取数据,并且希望显示这样的结果:

Category----Item
cat1        Item 1
            Item 2
            Item 3
cat23       Item x
            Item y
            Item z
X           apples
            oranges
            bananas
and so on....

我尝试了不同的方法,但一无所获。这是最新的尝试:

PHP

//Headers
echo 'Category';
echo ' | ';
echo 'Item';
echo "\n";

$sql = "SELECT `table1`.*, `table2`.* FROM table1 INNER JOIN table2 ON `table1`.`Category` = `table2`.`Category` ORDER BY `table1`.`Category`, `table2`.`Item`";
$dbq = mysql_query( $sql );
$cat = '';
while( $data = mysql_fetch_assoc( $dbq ) ) {
    if( !$cat == $data['category'] ) {
        $cat = $data['category'];

        echo $cat;
        echo ' | ';
        echo $data['item'];
        echo "\n";
    }
    else {
        echo '     ';
        echo ' | ';
        echo $data['item'];
        echo "\n";
    }
}

使用此代码,当前输出为:

Category----Item
cat1        Item 1
            Item 2
            Item 3
            Item x
            Item y
            Item z
            apples
            oranges
            bananas

...而不是所需的输出。

我正在寻找最有效、最简单的方法来仅回显每个类别 1 次。也许这段代码不是实现它的最佳方法,但我尝试了不同的方法,但我的大脑现在已经关闭了 S_S 。

最佳答案

花了我相当长的时间...

改变

if( !$cat == $data['category'] ) {

if( $cat != $data['category'] ) {

关于PHP如何在mysql查询列表中回显每组的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13715897/

相关文章:

MySQL存储过程如何生成新的auto_increment?

mysql - SQL 查找不是其他成员的好友的成员

python - MYSQLdb/Python 值错误但仍得到所需结果

php - 在 Google App Engine (GAE) 中使用 zip_read 解压缩上传的文件

php - 可以:hover apply to generic element tags specific to a parent div?

c# - 我可以将变量从 php 获取到我的 Windows 窗体吗?

PHP 不打印整个表格

MySQL 创建触发器语法

php - 在 PHP 中循环复选框

php - 将 php 值解析为 javascript Uncaught ReferenceError