Как правильно обратиться к JSON данным в MySQL в запросе с join?
Добрый день!
Для выборки данных сделала запрос к БД:
SELECT pr.*, cat.name as cat_name, cat.alias as cat_alias, vn.name as vn_name FROM `jsonproduct` AS pr
LEFT JOIN `categories` AS `cat` ON pr.product_json->'$.category_id' = cat.id
LEFT JOIN `vendor` AS `vn` ON pr.product_json->'$.vendor' = vn.id
WHERE product_alias = 'my-alias'
Запрос отдает данные из таблицы jsonproduct без проблем, а вот на все join выводит в ответе NULL.
Если я делаю простую выборку данных из таблицы jsonproduct product_json->'$.category_id' или product_json->'$.vendor', то в ответ получаю данные, по которым в дальнейшем должна проводиться выборка из таблиц categories / vendor.
В чем у меня ошибка в синтаксисе? Подозреваю, что он не опознает pr.product_json->....?
Все, разобралась, надо приводить к единому типу данные, тк из json идет строка, а у меня в id идет int
SELECT pr.*, cat.name as cat_name, cat.alias as cat_alias, vn.name as vn_name FROM `jsonproduct` AS pr
LEFT JOIN `categories` AS `cat` ON cat.id = CAST(JSON_EXTRACT(`product_json`, '$.category_id') AS SIGNED)
LEFT JOIN `vendor` AS `vn` ON CAST(product_json->'$.vendor' AS SIGNED) = vn.id
WHERE product_alias = 'my-alias'