0

I have two tables:

  1. CampaignTable

which has following property

id , campaign ,user_group

example would be

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

Then I have another table called User Table

with following property

id emp_id  user_group

Example is like this

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

I have to join this table and create an Array which has campaign wise user

for example for campaign with id 1 it should give me

274, 275

How can I achieve this in Mysql

Thanks

Avag Sargsyan
  • 2,437
  • 3
  • 28
  • 41
Vikram Anand Bhushan
  • 4,836
  • 15
  • 68
  • 130

1 Answers1

3

You should definetely normalize your data. For example consider this kind of normalization which renders almost no change to your DB structure:

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)
;

You could then fetch your data with a query as simple as that:

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

See SQLFiddle

Te Ko
  • 768
  • 3
  • 13