【问题标题】:PHP MySqli GROUP BYPHP MySqli 分组
【发布时间】:2015-10-26 16:56:41
【问题描述】:

我有一个存放客户的数据库,我需要将它们显示在按州和市分组和排序的页面上。

如果我使用下面的代码,我会得到我想要的结果,但每个城市的州都是重复的。 如果我将 ORDER BY 更改为 GROUP BY,那么它只显示 1 个结果,该州有几个城市,我显然希望它们都列在相关州下。

欢迎任何帮助。

"SELECT state, city, company_name  FROM mytable WHERE status='T' AND city <>'Head Office' AND company_name <>'my company' ORDER BY state ASC"

更多代码如下:

$coverage="";
$sql = "SELECT state, city, company_name  FROM mutable WHERE status='T' AND city <>'Head Office' AND company_name <>'my company' GROUP BY state, city ORDER BY state ASC, city ASC";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
$currentCity = NULL;
while($row = mysqli_fetch_assoc($result)) { 
    $id = $row["id"]; 
    $state =$row["state"];
    $office = $row["city"]; 
    $agent = $row["company_name"]; 
    if($row["city"] !== $currentCity) {
        $currentCity = $row["city"];
        $coverage .= '
        <div id="stateCoverage" class="fluid ">
        <p><strong class="white">' . $state . '</strong></p>
        </div>
            <div id="officeCoverage" class="fluid ">
                <h3>' . $office . '</h3>
            </div> 
        ';
    }
    $coverage .= '
        <div id="imageCoverage" class="fluid ">
                <img src="http://foo/bar/logos/' . $agent . '.jpg" alt="' . $agent . '">
            </div>
    ';

}
}else{
$coverage="<p>There seems to have been a problem locating your content, please try again, if the problem persists we would be grateful if you reported it to us, Thank you.</p>";
}

【问题讨论】:

  • 您的查询很好。您要实现的是表示层的任务,而不是 SQL。

标签: php mysqli


【解决方案1】:

您可能正在寻找的查询是这样的:

SELECT 
    state, city, company_name
FROM
    mytable
WHERE
    status = 'T' AND city <> 'Head Office'
    AND company_name <> 'my company'
group by state, city, company_name
ORDER BY state ASC, city ASC, company_name ASC

GROUP BY 运算符将所有行折叠成一行,因为它们与参数匹配。为避免将所有记录折叠成一行,您只需根据需要向该运算符添加更多字段。

【讨论】:

  • 但他仍然每个城市会有一行,即重复的州值。
  • 谢谢@jimmy,是的,我尝试了所有参数,但仍然得到重复,就像我需要拆分查询一样,州内不会有重复,但城市中可能会有重复,所以我使用 DISTINCT 无法实现任何目标,即使这基本上就是我想要的 DISTINCT(State)
  • @IanPither 如前所述,这不是可以(或应该)在 SQL 中完成的事情。
  • 正如@X.L.Ant 所说,我认为您试图解决问题的错误方面。您应该详细说明您的问题,添加您正在使用的 PHP 代码以及您的预期结果,以便我们更好地帮助您。
  • @jimmy,感谢,也许您可​​以查看实时页面,您会立即看到我所期待的,arpad.property/coverage.php 您会发现 South Central 有 2 条线路其中应该有 2 个徽标,我只需要“州”作为标题,就像城市一样
猜你喜欢
  • 2014-08-20
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 2015-03-13
  • 2014-11-20
相关资源
最近更新 更多