Mysql Выборка с mysql LEFT JOIN and JSON array->object

LionGeek

Новичок
Всем привет!

Прошу помощи со следующей задачей.

В базе имеется таблица table1 с полем commun с json данными следующего вида [{"data": "95", "type": "sale"}, {"data": "104", "type": "customer"}, {"data": "13", "type": "contact"}]
и таблица table2

Пишу запрос:
$sel = mysqli_query($t, "SELECT t1.*, t2.name as name2
FROM `".DB_PREFIX."_table1` t1
LEFT JOIN `".DB_PREFIX."_table2` t2
ON CAST(t1.commun ->> '$.data' AS SIGNED) = t2.id
");
while($row = mysqli_fetch_assoc($sel)){
echo $row['name2'];
}

Такой запрос отлично работает если в поле commun простой объект {"data": "104", "type": "customer"}, а вот с массивом объектов не получается. Подскажите, пожалуйста, что я не дописал в запросе.
 

Тугай

Новичок
Нужно что-то такое
Код:
SELECT
JSON_CONTAINS(JSON_EXTRACT('[{"data": "95", "type": "sale"}, {"data": "104", "type": "customer"}, {"data": "13", "type": "contact"}]', '$[*].data'), '["104"]');
1
т.е.

Код:
from t1, t2
where JSON_CONTAINS(JSON_EXTRACT(t1.commun, '$[*].data'), CONCAT('["',t2.id,'"]'))
 

Тугай

Новичок
Там строки
можно JSON_ARRAY(CAST(42 AS CHAR)), думаешь CONCAT() сильно медленней ? :)
 

WMix

герр M:)ller
Партнер клуба
Не, даже вопрос себе такой не ставил, просто увидел создание нотации любительским путем :)
 
Сверху