2016-07-19 16 views
0

我有這個數據庫,其中它有名爲Mall(它包含不同的商場名稱),NameOfStore(它包含商店的名稱)和AMEX(它包含是或否,取決於商店接受美國運通或不接受)。然後在PHP和MySQL中排序功能

我想要做的是統計每個商場接受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 
    } 

然後,我想通過商店數量他們有接受美國運通的降序排列。我需要使用ORDER BY函數,但我不確定把它放在這個特定的上下文中。

摘要:

下拉列表

用戶選擇他想要的商場進行排序哪個類別(例如:與AMEX,餐廳總數等店鋪數量)下令

計劃顯示所選類別的商城列表

+0

'$ sort'變量可以包含什麼值? –

+0

$ sort將包含不同的情況,其中每個案例將涉及特定的商場 – lexus

+0

訂單總是降序? –

回答

1

此查詢應該爲您提供所需的結果。

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

嗨,謝謝。我在我的數據庫中試了一下,邏輯是對的,它工作。現在面臨的挑戰是將其整合到我的程序的「排序」功能中,但這將是一大幫助。 – lexus

+0

如果有多個類別我想要商場進行排序,該怎麼辦?例如,在下拉列表中將會有按餐館數量排序商場的選項。在這種情況下,我需要使用案例,但我不確定每個案例中的條件是什麼,因爲我們擁有的初始$查詢僅用於AMEX計數器。 – lexus

0

你要使用if操作人員進行表示商店滿足條件一個不錯的數字,然後總結這些了。然後你可以對此進行排序。類似這樣的:

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