5

I want to join multiple row values from table.

Table name:Item

    ID |            item_id |     Value
    1               43          item1
    2               44          item2
    3               44          item3
    4               44          item4
    5               45          item5
    6               45          item6

ID's are unique (primary key) What I am looking to output is a mysql query is something to which gives this output as given below

Output:

  ID |            item_id |     Value
    1               43          item1
    2               44          item2,item3,item4
    3               44          item2,item3,item4
    4               44          item2,item3,item4
    5               45          item5,item6
    6               45          item5,item6

kindly requesting to give some suggestions

user092
  • 437
  • 2
  • 10
  • 26

4 Answers4

2

Try this query:

SELECT t1.ID, t1.item_id, t2.Value
FROM item t1
INNER JOIN
(
    SELECT item_id, GROUP_CONCAT(Value) AS Value
    FROM item
    GROUP BY item_id
) t2
    ON t1.item_id = t2.item_id

Follow the link below for a running demo:

SQLFiddle

Tim Biegeleisen
  • 502,043
  • 27
  • 286
  • 360
0

You can use self join with subquery of group_concat

SELECT    i.ID, i.item_id, subquery.`new_value` as value
FROM item i 
JOIN (
    SELECT item_id, GROUP_CONCAT(`Value`) as new_value
    FROM item 
    GROUP BY item_id;
)as subquery 
ON  subquery.item_id = i.item_id;
Vipin Jain
  • 3,686
  • 16
  • 35
0

You can use below query.

SELECT GROUP_CONCAT(value) FROM Item GROUP BY item_id;
RJParikh
  • 4,096
  • 1
  • 19
  • 36
0

Try this Query

  SELECT t1.ID, t1.item_id,
      (
        SELECT GROUP_CONCAT(t2.Value) FROM item AS t2
        WHERE t1.item_id = t2.item_id
        GROUP BY t2.item_id
      ) AS Value
 FROM item AS t1

Demo http://sqlfiddle.com/#!9/bbc20/18/0

Ankit Agrawal
  • 2,426
  • 1
  • 13
  • 27
Ninju
  • 2,522
  • 2
  • 15
  • 21