Соединить две таблицы mysql запрос возвращает все значения списка пользователей?

Соединить две таблицы MySQL запрос возвращает все значения списка пользователей.
Пожалуйста, исправьте этот запрос или предоставьте запрос.

Табл. 1: пользователи

+---------+------------+-----------+
| user_id | user_name  | cource_id |
+---------+------------+-----------+
|       1 | ramalingam | 1,2,3,4   |
|       2 | yuvi       | 1         |
|       3 | Saravanan  | 1,2,3     |
|       4 | gandhi     | 1         |
+---------+------------+-----------+

Таблица 2: курс

+-----------+-------------+
| cource_id | cource_name |
+-----------+-------------+
|         1 | php         |
|         2 | wordpress   |
|         3 | seo         |
|         4 | magento     |
+-----------+-------------+

Выход

--------------------------------------
user_id | user_name | cource_id
--------------------------------------
1       | ramalingam| php,wordpress,seo,magnto
2       | yuvi      | php
3       | Saravanan | php,wordpress,seo
4       | gandhi    | php

Это мой запрос

SELECT u.user_id,u.user_name, GROUP_CONCAT(c.cource_name)as course_name
FROM users as u 
LEFT JOIN course as c ON c.cource_id = u.user_id

Спасибо за любую помощь, которую я могу получить на этом…

1 ответ

  1. В общем, дизайн БД плохой,не используйте списки, разделенные запятыми. Hovewer вы должны использовать FIND_IN_SET()в вашем предложении JOIN для достижения этого:

    SELECT
        u.user_id,
        u.user_name,
        GROUP_CONCAT(c.cource_name) AS course_name
    FROM
        users AS u
    LEFT JOIN cource AS c ON FIND_IN_SET(c.cource_id, u.cource_id)
    GROUP BY
        u.user_id,
        u.user_name
    

    Выход:

    +---------+------------+---------------------------+
    | user_id | user_name  | course_name               |
    +---------+------------+---------------------------+
    |       1 | ramalingam | php,wordpress,seo,magento |
    |       2 | yuvi       | php                       |
    |       3 | Saravanan  | php,wordpress,seo         |
    |       4 | gandhi     | php                       |
    +---------+------------+---------------------------+
    4 rows in set