#php #mysql #sql #mysqli
Есть таблица 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 которое займёт мало времени на обработку, то я буду рад принять помощь и рассмотреть пример.
Ответы
Ответ 1
SELECT * FROM db_weapons WHERE quality IN ('base_grade','exotic','restricted','covert') ORDER BY FIELD(quality, 'base_grade','exotic','restricted','covert')Ответ 2
Вам надо создать справочник групп, примерно такой: 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 группы.Ответ 3
Например 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Ответ 4
Покапай в сторону GROUP BY, а потом уже будешь вытаскивать группы по очередности которые нужны.
Комментариев нет:
Отправить комментарий