Chciałbym aby MySQL posortował elementy wewnątrz zgrupowania wg wartości kolumny `elem_active` ASC – tak, aby identyfikator grupy (to co dostaje w wyniku zapytania) zawierał (jeśli jest element) wiersz z elem_active = 1 a (jeśli w grupie), natomiast jeśli, żaden pod element go nie posiada to 0. Wiersz z `elem_active` = 1 zawiera dodatkowo kolumne `elem_office`, która zawiera ID biura które jest wyróżnione, a więc nie mogę zastosować MAX(`elem_active`) i mieć wyniku 1 lub 0 bo to mi nic nie da - dalej nie poznam właściwego ID biura. Kolumna `limit_date` oznacza kiedy kończy się wyróżnienie - jeśli nie ma limitu = 0, jeśli jest to jest podana data w formie timestampa.
Obecne sortowanie:
SELECT ... GROUP BY a_id ORDER BY CASE WHEN `elem_active` > 0 AND (`limit_date` = 0 OR `limit_date` > now()) THEN 0 ELSE 1 END ASC
Zapytanie ma na celu sortowanie ogłoszeń w bazie danych – wyróżnione u góry, reszta niżej. Nie sprawdza się gdy grupa jest więcej niż jedno elementowa i ma `elem_active` równe 1 i 0 mysql wybiera sobie wiersze po ID chyba i nie koniecznie wyświetla to co chce.
Istnieje tabela z ogłoszeniami touroperatorów w której jest kolumna `a_id` oznaczająca ID ogłoszenia, w zapytaniu wyszukiwarki dołączane są ID powiązań biur podróży i dzięki temu kolejne biura – przez to w wyniku dla każdego biura jest przypisane te samo ogłoszenie. Dla danego biura i ogłoszenia dołączana jest tabela wyróżnień (LEFT JOIN) z której jest pobierane właśnie te `elem_active` (wyróżnienie aktywne) oraz `elem_office` (wyrożnione ID biura).
Układ tabel jest dość skomplikowany i rozbudowany jeśli nie wytłumaczyłem jasno o co chodzi to proszę pisać, przekopiuje go tu.
Z góry dziękuje za pomoc.