Как составить mysql-запрос с указанием приоритетной группы по списку ID?
Добрый день!
Прошу помочь в вопросе составления MYSQL-запроса.
Выполняю задание: реализовать поиск одновременно...
- по артикулу (свойство элемента — связанная с элементом таблица),
- по названию (поле таблицы),
- по брендам (свойство элемента),
- по принадлежности к коллекциям (свойство элемента),
- по названию разделов (элемент другой таблицы, к которой элемент привязан по полю SECTION_ID).
Одновременно — чтобы сформировался массив результатов, разбитый на постраничную навигацию.
Приоритет подачи результатов поиска — согласно указанного выше списка. То есть сначала показываем попадание по артикулу, потом по названию, ... и так по списку
В составлении результата участвует много связанных таблиц, хочу делать выборку этих связей только для тех элементов, которые попали на ту или иную страницу в пагинации. Чтобы оптимизировать запросы, свожу всё к одному комплексному запросу.
Как я делаю сейчас:
- перебираю условия (поиск по артикулу, по названию, по бренду...),
- накапливаю массив ID тех элементов, которые соответствуют каждому из параметров,
- в финальном запросе передаю накопленный массив значений ID в качестве ограничения, отбираю записи со всеми нужными свойствами в диапазоне согласно постраничной навигации.
Выборка и постраничка работает, за исключением того, что не соблюдена приоритетность. Товары в выборке — «вперемешку».
Подскажите, как правильно составить запрос?
Хотя бы на уровне mysql (потому что именно на этом уровне сейчас нет понимания).