2016-07-19 9 views
0

このデータベースには、モール(モールの名前が異なる)、NameOfStore(ストアの名前を含む)、AMEX(これはYESストアはアメリカン・エキスプレスを受け入れます)。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 
    } 

AMEXを降順で受け入れる店舗の数で注文したいと思います。 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 
関連する問題