PHP和MySQL中的计数然后排序函数


Count then Sort Function in PHP and MySQL

我有这个数据库,其中有名为Mall(它包含不同的Malls名称)、NameOfStore(它包含商店名称)和AMEX(它包含YES或NO,取决于商店是否接受American Express)的列。

我想做的是统计每个商场接受AMEX的商店数量,然后根据接受AMEX商店的数量降序排列商场。我想在下拉列表中加入一个"排序"功能,我的程序的用户可以选择是否要对拥有最多AMEX等的商场进行排序。我可以为我的"根据某些条件筛选"功能制作一个下拉列表,但这个排序功能大不相同。

我不确定如何合并这些查询的逻辑并正确排序。

 function sortStore($conn, $sort)
    {
    $table = "table1";
    $column1 = "Mall";
    $column2 = "NameOfStore";
    $condition = "AMEX = 'YES'"
    $query = Select Count($column2) from $table where $condition AND $sort";
    ..other codes..
    //$sort would contain cases (one case for each mall)
    //Example: case "Mall1": $sort = "Mall = 'Mall1'; break;
    //I'm actually not sure if the logic on my query is correct based on what I want to happen
    }

然后我想按接受AMEX的商店数量降序订购商场。我需要使用ORDERBY函数,但我不确定在这个特定的上下文中把它放在哪里。

摘要:

下拉列表

用户选择他希望对商场进行分类的类别(例如:拥有AMEX的商店数量、餐厅数量等)

程序显示所选类别的Malls排序列表

这个查询应该会给您所需的结果。

select mall, count(AMEX) AS AMXCNT 
from table1 
WHERE AMEX='yes' 
GROUP BY MALL ORDER BY AMXCNT

您需要使用if运算符来生成一个漂亮的数字,表示商店满足条件,然后将其相加。然后你可以对此进行分类。类似这样的东西:

select mall, sum(if($condition, 1, 0)) as numStoresMatch
from table1
group by mall
order by numStoresMatch desc