У меня есть MariaDB 10.2 и этот SQL:
SELECT products.*,
CONCAT('[', GROUP_CONCAT(JSON_OBJECT(
'id', V.id,
'price', V.price
) ORDER BY V.price ASC), ']') AS variants,
FROM products
LEFT JOIN products_variants V ON V.products_id = products.id
GROUP BY products.id
LIMIT 0,10
Результат:
Array (
[0] => Array (
[id] => 1,
[variants] => [{"id": 1, "price": 100},{"id": 2, "price": 110}]
)
[1] => Array (
[id] => 2,
[variants] => [{"id": 3, "price": 200},{"id": 4, "price": 210}]
)
)
Мне нужно отсортировать продукты по цене первого варианта каждого продукта.
- Идентификатор продукта 1 должен быть первым, поскольку цена первого варианта составляет 100
- Идентификатор продукта 2 должен быть вторым, потому что цена первого варианта 200, а 200> 100
Я пытаюсь:
ORDER BY JSON_EXTRACT(`variants`, '$[0].price)
но получите ошибку:
Reference 'variants' not supported (reference to group function)