简单的SELECT,GROUP,ORDER BY查询不按预期运行

时间:2015-07-14 13:19:34

标签: php mysql

我想在我的数据库中输出城市,并在每个城市显示代理商的标识(company_name是图像的名称)

在屏幕截图中,您可以看到Head Office中有1个代理,Leighton Buzzard中有3个代理。下面的SELECT查询给了我不需要的2行。我已经将查询更改为GROUP BY,但所有这一切都删除了第二和第三个结果,然后显示我想要的2个结果,但只有2个Arpad徽标。我想要的是所有3个Leighton Buzzard徽标都在Leighton Buzzard的标题下展示。

我尝试在'city'上使用DISTINCT,但这似乎完全停止了查询。

非常感谢任何帮助。

"SELECT city, company_name FROM memberlogin_members ORDER BY city ASC"

enter image description here

$sql = "SELECT city, company_name FROM memberlogin_members GROUP BY city ASC ";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        $id = $row["id"];
        $office = $row["city"];
        $agent = $row["company_name"];
        $coverage.='<div id="officeCoverage" class="fluid "><h3>' . $office . '</h3></div> <div id="imageContainer" class="fluid "> <div id="imageCoverage" class="fluid "><img src="http://arpad.property/app/logos/' . $agent . '.jpg" alt="' . $agent . '"></div> </div>';

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

$sql = "SELECT city, company_name FROM memberlogin_members ORDER BY city ASC";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
    $currentCity = NULL;
    while($row = mysqli_fetch_assoc($result)) { 
        $id = $row["id"]; 
        $office = $row["city"]; 
        $agent = $row["company_name"]; 
        if($row["city"] !== $currentCity) {
            $currentCity = $row["city"];
            $coverage .= '
                <div id="officeCoverage" class="fluid ">
                    <h3>' . $office . '</h3>
                </div> 
            ';
        }
        $coverage .= '
            <div id="imageContainer" class="fluid "> 
                <div id="imageCoverage" class="fluid ">
                    <img src="http://arpad.property/app/logos/' . $agent . '.jpg" alt="' . $agent . '">
                </div>
            </div>
        ';
    }
}

您循环显示结果,但只有在城市发生变化时才会添加城市标题。如果没有,您只需添加图像。

PS:我不会为DIV使用“id”属性,因为它们在HTML代码中不止一次存在。