Есть таблица db_weapons.
Как составить подзапросы mysql для вывода из таблицы всех значений, но при этом сортируя их по категориям которые записаны в ячейке quality
Что бы выведенный вид был таков:
----------------------------
id: 3, quality: 'base_grade',
id: 5, quality: 'base_grade',
id: 4, quality: 'exotic',
id: 6, quality: 'exotic',
id: 2, quality: 'restricted',
id: 7, quality: 'restricted',
id: 1, quality: 'covert'
----------------------------
Это всё для того что бы не сортировать силами php Но есть кто-то знает решение на php которое займёт мало времени на обработку, то я буду рад принять помощь и рассмотреть пример.
SELECT * FROM db_weapons
WHERE quality IN ('base_grade','exotic','restricted','covert')
ORDER BY FIELD(quality, 'base_grade','exotic','restricted','covert')
Например ORDER BY + CASE
SELECT *
FROM db_weapons
ORDER BY
CASE quality
WHEN quality = 'base_grade' THEN 1
WHEN quality = 'exotic' THEN 2
WHEN quality = 'restricted' THEN 3
WHEN quality = 'covert' THEN 4
ELSE 99 --неизвестные в конце
END
Вам надо создать справочник групп, примерно такой:
ord quality
1 exotic
2 base_grade
3 restricted
4 covert
И запрос выборки из основной таблице сделать тогда таким:
select A.*
from db_weapons A, qualityOrd B
where B.quality=A.quality
order by B.ord
В любом случае SQL надо явно сказать в каком порядке должна быть сортировка, волшебного оператора "отсортируй как мне хочется" к сожалению не предусмотрено.
Но по хорошему, даже при отсутствии необходимости особой сортировки такой справочник нужен. Не стоит хранить в основной таблице повторяющиеся текстовые значения. При вводе текста человек может ошибиться буквой и это будет уже другая группа. И если захочется переименовать группу или придать группе еще и русское название - ему придется делать это во всех записях. Обычно в подобных ситуациях названия хранятся в справочнике, а в основной таблице только ID группы.
Покапай в сторону GROUP BY, а потом уже будешь вытаскивать группы по очередности которые нужны.
Продвижение своими сайтами как стратегия роста и независимости