MySQL запрос для получения списка элементов со ссылкой на другую таблицу

У меня есть такой стол

+ ---- + ------- + ------------- +
| id | предметы | имя |
+----+-------+-------------+
|  1 | 1,2,3 | горячие предложения |
|  2 | 2,3,4 | предложения |
+ ---- + ------- + ------------- +

где элементы являются идентификатором продукта

вот таблица продуктов (мини-версия)

+ ----------- + -------------------- +
| продукт | название продукта |
+-----------+--------------------+
|         1 | Sony Mobile      |
|         2 |   iphone 4s        |
|         3 | ноутбук Dell v1   |
|         4 | Самсунг Мышь |
+ ----------- + -------------------- +

мне нужно получить результат в виде массива элементов с именем ex [горячие предложения =>[(1,sony mobile),(2,iphone 4s),(3, ноутбук Dell v1) ], предложения =>[-]]

можно добиться этого в (MYSQL) хранимой процедуре, если нет, как я могу добиться этого с минимальным количеством запросов: примечание: первая таблица будет иметь максимум 6 строк

1 ответ

Вы можете использовать join с find_in_set():

select t.id, t.name, p.productname
from yourtable t
   join products p on find_in_set(p.productid, t.items)

Как примечание, я бы рекомендовал рассмотреть вопрос о нормализации базы данных. Лучше создать еще одну 1-n таблицу для хранения значений, разделенных запятыми.

Другие вопросы по тегам