2016-10-16 4 views
0

У меня есть две таблицы:как соответствовать два разных столбцов в Mysql, которое разделенные запятой значения

  1. CampaignTable

который следующее свойство

id , campaign ,user_group 

пример был бы

1 8867116213 5,11,15,16,18,20 
2 8867116214 0,8,22 

Тогда у меня есть другая таблица, называемая таблица User

со следующим свойством

id emp_id user_group 

Пример, как это

1 274 0,5,8,9,10,11,21,20 
2 275 5,11,20 
3 279 19,21,22,25 

я должен присоединиться к этой таблице и создать массив, который имеет кампании мудрое пользователя

например, для кампании с идентификатором 1, он должен дать мне

274, 275

Как я могу добиться этого в Mysql

Благодарности

+0

Вы должны нормализовать свою базу данных. –

+0

Как говорит @ Иванка Тодорова, нормализуйте свою базу данных. Выполнение этого проекта сделает жизнь чрезвычайно трудной. –

+0

Можете ли вы дать мне некоторое представление Как я нормализуюсь? Я имею в виду, какие столбцы я должен делать – Vikram

ответ

3

Вы должны определенно нормализовать данные. Для примера рассмотрим такой нормализации, которая не оказывает почти никакого изменения в вашей структуре БД:

INSERT INTO CampaignTable 
    (`campaign`, `user_group`) 
VALUES 
    (8867116213, 5), 
    (8867116213, 11), 
    (8867116213, 15), 
    (8867116213, 16), 
    (8867116213, 18), 
    (8867116213, 20), 
    (8867116214, 0), 
    (8867116214, 8), 
    (8867116214, 22) 
; 

INSERT INTO UserTable 
    (`emp_id`, `user_group`) 
VALUES 
    (274, 0), 
    (274, 5), 
    (274, 8), 
    (274, 9), 
    (274, 10), 
    (274, 11), 
    (274, 21), 
    (274, 20), 
    (275, 5), 
    (275, 11), 
    (275, 20), 
    (279, 19), 
    (279, 21), 
    (279, 22), 
    (279, 25) 
; 

Вы могли бы выборки данных с помощью запроса в виде простой, как:

SELECT c.campaign, GROUP_CONCAT(DISTINCT u.emp_id) FROM CampaignTable c 
JOIN UserTable u ON c.user_group = u.user_group 
GROUP BY c.campaign 

См SQLFiddle