mysql запятая отдельный столбец таблицы в concat () или аналогичный подход

0
Database Setup_Items
id     product
1      53,23,11,57


Database Product
id   name
53   product 53
23   product 23
11   product 11
57   product 57 etc etc etc

Поэтому у меня есть таблица базы данных для Setup_Items (si), которая объединяет несколько продуктов в группу. Затем у меня есть таблица базы данных для Product (p), которая хранит всю информацию о продукте.

Я использую следующий запрос для получения информации из таблицы Product (p), на основе которой выбран параметр Setup_Item (si)

SELECT p.id, p.name,p.image
    FROM Setup_Items as si
    INNER JOIN Product as p ON si.products LIKE CONCAT(',', p.id, ',')

Вот моя проблема. В базе данных находятся следующие элементы...

Setup_Items.products = 53,23,11,57

Текущие результаты

  1. Он получает 9 результатов назад... 5, 3, 53, 2, 23, 1, 11, 7, 57
  2. Он разбивает два разряда цифр на 2-значный и однозначный уникальный номер.

Необходимые результаты

Мне нужны только 4 результата. 53, 23, 11, 57

Как мне написать этот запрос, чтобы получить эти результаты?

Если есть лучший метод, чем concat(), пожалуйста, дайте мне знать !!!

Теги:

1 ответ

1
Лучший ответ

Используйте FIND_IN_SET:

    SELECT p.id, p.name 
    FROM Setup_Items as si
    INNER JOIN Product as p ON FIND_IN_SET(p.id, si.product)
  • 0
    Спасибо за это решение. Я никогда не использовал find_in_set раньше; тем не менее, с тех пор, как вы упомянули об этом, я использовал его около 20 раз. ха-ха

Ещё вопросы

Сообщество Overcoder
Наверх
Меню