2016-05-02 12 views
0

Ich versuche, etwas für eine eCommerce-Website zu erreichen, die Idee ist, die Ergebnisreihenfolge nach den Unterkategorien, aber sicherzustellen, dass alle Elemente aus der ausgewählten Kategorie zuerst und die Elemente angezeigt werden wo die secondaryCategories zuletzt angezeigt werden.Mehrreihensortierung mit einigen speziellen Anforderungen

Der Catch ist, dass ich in der Lage sein, alle Elemente mit der gleichen Unterkategorie in demselben Abschnitt zusammenzuführen; Dies ist im Fall eines Artikels, wo es mit den sekundären Kategorien übereinstimmt, aber es gibt auch einen, der der bestimmten Kategorie entspricht, die diese zusammen sein sollten.

Ich bin in der Lage dies zu tun, indem ich Select ..Union All. Select ... dynamisch mit PHP erzeuge, aber das verlangsamt die Abfrage je nachdem wie viele union und select Statements generiert werden.

Ich würde gerne sehen, wenn jemand eine bessere Idee hat, wie dies zu tun, die nächste, die ich bekam, war diese SQL, um das gewünschte Ergebnis zu erhalten, aber es noch nicht alle Unterkategorie Elemente zusammen, und wenn ich die Unterkategorie zuerst auf Bestellung bis dahin die Artikel aus der bestimmten Kategorie, die ich suche nicht oben auf der Liste, werden sie mit den secondaryCategories vermischt.

SELECT myFields FROM items where (category = :category or 
FIND_IN_SET(:category,secondaryCATEGORIES)>0)and moreFilters 
ORDER BY CASE WHEN Category= :category THEN 1 ELSE 2 END ASC,subcategory ASC 

Beispieldaten:

 
Name   Category   Subcategory  secondaryCategories 
Adapter1  Adapters   Audio Adapter  Audio 
Adapter2  Adapters   Video Adapter  Video 
Adapter3  Network   Network Adapters Adapters 
Adapter4  Audio    Audio Adapter  Adapters 

Nach Sortierung ist:

 
Name   Category   Subcategory  secondaryCategories 
Adapter1  Adapters   Audio Adapter  Audio 
Adapter2  Adapters   Video Adapter  Video 
Adapter4  Audio    Audio Adapter  Adapters 
Adapter3  Network   Network Adapters Adapters 

Was ich es sein will:

 
Name   Category   Subcategory  secondaryCategories 
Adapter1  Adapters   Audio Adapter  Audio 
Adapter4  Audio    Audio Adapter  Adapters 
Adapter2  Adapters   Video Adapter  Video 
Adapter3  Network   Network Adapters Adapters 

+0

Tabellenstrukturen, Beispieldaten und erklären bitte Ausgabe. – e4c5

Antwort

0

Nur falls jemand fragen, die gleiche Ich habe dieses Problem gelöst, indem ich Code in meinem Programm hinzugefügt habe bin.

Was ich getan habe, war zuerst eine Auswahl und Reihenfolge für die Unterkategorien, sobald ich die Unterkategorien in Reihenfolge habe ich verwendet, um die SQL-Abfrage mit einer Schleife zu generieren, wenn "Unterkategorie = {Unterkategorie_von_Query [1]} dann 1 wenn subcategory = {subcategory_from_query [2]} dann 2 und so weiter "

Wenn das Hinzufügen der eine Probe PHP-Code hilft, lassen Sie mich wissen, und ich werde es veröffentlichen.

Verwandte Themen