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
Tabellenstrukturen, Beispieldaten und erklären bitte Ausgabe. – e4c5