2016-07-19 8 views
0

Ich habe diese Datenbank, in der es Spalten namens Mall (es enthält verschiedene Namen von Malls), NameOfStore (es enthält Namen von Geschäften) und AMEX (es enthält entweder JA oder NEIN je nach dem Store akzeptiert American Express oder nicht).Zähle dann Sort Funktion in PHP und MySQL

Ich möchte die Anzahl der Geschäfte zählen, die AMEX für jedes Einkaufszentrum akzeptieren, und dann die Einkaufszentren in absteigender Reihenfolge sortieren, je nachdem, wie viele Geschäfte AMEX akzeptieren. Ich möchte eine "Sortierung" -Funktion in ein Dropdown-Listenformular integrieren, wo Benutzer meines Programms wählen können, ob sie die Malls mit den meisten AMEX usw. sortieren wollen. Ich konnte eine Dropdown-Liste für meinen "Filter" nach einigen erstellen Bedingung "Feature, aber diese Sortierfunktion ist sehr unterschiedlich.

Ich bin mir nicht sicher, wie ich die Logik für diese Abfragen zusammenführen und richtig sequenzieren werde.

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 
    } 

Dann würde ich mag den Malls durch die Anzahl der Geschäfte Reihenfolge haben, die AMEX in absteigender Reihenfolge akzeptieren. Ich muss ORDER BY-Funktion verwenden, aber ich bin nicht sicher, wo es in diesem bestimmten Kontext platziert werden soll.

ZUSAMMENFASSUNG:

Dropdown-Liste

Benutzer wählen, welche Kategorie er die Mall will sortiert werden (Beispiel: Anzahl der Shops mit AMEX, Anzahl der Restaurants, etc.)

Programmanzeigen bestellt Liste von Einkaufszentren für die gewählte Kategorie

+0

welche Werte '$ sort' Variable enthalten kann? –

+0

$ sort würde die verschiedenen Fälle enthalten, in denen sich jeder Fall auf ein bestimmtes Einkaufszentrum beziehen würde – lexus

+0

ist die Reihenfolge immer absteigend? –

Antwort

1

Diese Abfrage sollte Ihnen das gewünschte Ergebnis geben.

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

Hallo, danke. Ich habe es in meiner Datenbank versucht und die Logik war richtig und es hat funktioniert. Die Herausforderung besteht jetzt darin, sie in die "Sortierfunktion" meines Programms zu integrieren, aber das wird eine große Hilfe sein. – lexus

+0

Was ist, wenn es mehrere Kategorien gibt, die Malls sortiert werden sollen? Zum Beispiel wird in der Dropdown-Liste die Option Sortieren nach Anzahl der Restaurants angezeigt. In diesem Fall würde ich Fälle verwenden müssen, aber ich bin mir nicht sicher, was ich in die Bedingung pro Fall setzen werde, weil die anfängliche $ -Abfrage, die wir haben, nur für den AMEX-Zähler gedacht ist. – lexus

0

Sie wollen einen if Operator verwenden, um eine nette Zahl zu machen darstellt, dass ein Geschäft die Bedingung erfüllt, und diejenigen, dann zusammenzufassen. Dann kannst du danach sortieren. Etwas wie dieses:

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