Но на простом языке запрос выводит сервера по таким критериям:
1)Имеют вип (is_vip = 1) и подключенные услуги
2)Не имеют вип, но имеют подключенные услуги
3)Имеют вип, но не имеют подключенных услуг
4)Не имеют випа, не имеют подключенных услуг
Каждая услуга имеет свой приоритет, по которому идёт сортировка, чтобы были такие услуги как "СУПИР ПУПИР УСЛУЖКО" выводили на первые места все сервера, что её подключили и ориентир шел именно на определенный флаг - priority (по нему и идёт сортировка везде).
Там 4 уровня выборок, каждый для чего-то нужен:
1. Выборка всех записей с инкрементом 'top' - для того чтобы определять в какой позиции находится запись
2. Второй просто для того чтобы задать переменную @c, которая потом перейдёт в top на 1 уровне select-а - это пришлось сделать так, потому что PDO не поддерживает видимо SET
var := 0 и т.п.
3. Третий уровень просто нужен для того чтобы можно было объеденить результаты с сортировкой, ибо UNION не работает на выборках с ORDER BY
4. Четвертый уровень просто выводит данные нужные + JOINит