У меня есть две базы данных, с которыми я хотел бы сравнить результаты. У одного из них есть столбец, в котором хранится массив информации для сопоставления с другой таблицей.
table1
------------------------------------
| collection_id | items_array |
------------------------------------
| 123 | ['item1' ,'item2'] |
------------------------------------
table2
---------------------
| user_id | item_id |
---------------------
| 2 | item1 |
| 1 | item2 |
---------------------
Я хотел бы сделать SQL-запрос, который будет использовать table1.collection_id для получения столбца table1.items_array, а затем получить каждый table2.user_id, где table2.item_id находится в массиве table1.items_array. Мое выражение сейчас (в PDO):
SELECT
table2.user_id
FROM table2
WHERE table2.item_id IN (
SELECT table1.items_array
FROM table1
WHERE table1.collection_id = ?
)
Таким образом, идея заключается в том, что оператор IN должен быть массивом из столбца items_array. Однако это не работает. Я попытался отформатировать массив в столбце items_array по-другому, чтобы увидеть, является ли это синтаксической ошибкой. Я пробовал следующее:
['item1', 'item2']
['item1','item2']
'item1', 'item2'
Но, похоже, ни один из них не достиг желаемого результата.
Возможно ли вообще делать то, что я надеюсь сделать, или я должен стремиться хранить информацию другим способом? Я хотел бы сохранить его в виде массива, потому что после размещения массива пользователю больше никогда не придется обновлять или сопоставлять массив, поэтому я не думаю, что возникнет проблема нормализации.