Для правильного вопроса надо знать половину ответа
Если вы используете корректный JWT, то роль должна хранится в нём. Токен защищён подписью и подставить в него произвольное значение не получится.
При входе по логину/паролю роль берётся из базы данных, передавать её в форме не надо.
При создании нового пользователя админом на бэке проверяется роль отправившего запрос (в токене).
При самостоятельной регистрации нового пользователя принудительно назначается роль "user" и поднять её может только действующий админ.
Для правильного вопроса надо знать половину ответа
Логично. Вложенные зависимые подзапросы - это очень плохо. А вообще-то весь запрос кривой и в новых версиях MySQL работать не будет из-за ограничений на поля при группировке.
SELECT *
FROM `products`
JOIN (
SELECT MAX(`discount_price`) AS `max_price`, `product_id`
FROM `options`
GROUP BY `product_id`
) AS `max` ON `max`.`product_id` = `products`.`id`
ORDER BY `max`.`max_price` ASC
LIMIT 24
Для правильного вопроса надо знать половину ответа
Если вас в схеме есть связь один-к-одному, то, с большой вероятностью, вы что-то сделали неправильно.
В данном случае нет необходимости в отдельной таблице `refferal`, достаточно поля `referrer_id` в таблице `users`, так как пользователь может зарегистрироваться только по одному приглашению.
Аналогично, не имеют смысла таблицы `inventory` и `item_inventory`, достаточно поля `user_id` в таблице `items`.
Для правильного вопроса надо знать половину ответа
SELECT *
FROM `change_group` AS `cg`
JOIN `change_item` AS `ci`
ON `ci`.`group_id` = `cg`.`id` AND `ci`.`field` = 'status'
RIGHT JOIN `issue` AS `i`
ON `i`.`id` = `cg`.`issue_id`
WHERE `i`.`id` IN (1,2,3,4,5)
ORDER BY `i`.`id`, `cg`.`created_at`;
Для правильного вопроса надо знать половину ответа
Что значит "очистка столбца"? Удаление всех значений в нём? UPDATE "table" SET "column" = NULL
Удаление столбца из таблицы? ALTER TABLE "table" DROP COLUMN "column"
Для правильного вопроса надо знать половину ответа
Если не ошибаюсь, то это вариант задачи об упаковке рюкзака. Она относится к NP-полным и гарантированно решается только полным перебором вариантов. Вряд ли на SQL можно достаточно эффективно её решить, тем более одним запросом.
Для правильного вопроса надо знать половину ответа
Для примитивного случая - всегда выбираем первую попавшуюся запись:
SET @last = 0;
SELECT `ID_1`, @last := `ID_2` AS `ID_2`
FROM (
SELECT `ID_1`, `ID_2`
FROM `table`
ORDER BY `ID_1`, `ID_2`
) AS `t`
WHERE `ID_1` > @last;
Для правильного вопроса надо знать половину ответа
JSON есть смысл использовать исключительно для хранения данных. Если по данным нужен поиск, сортировка, слияние таблиц - только классическая многоколоночная/многотабличная структура.