我有这个数据库,其中有名为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