cahyadsn

JOIN serial data

Dec 23rd, 2015
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.40 KB | None | 0 0
  1. CREATE TABLE categories(
  2.  id int auto_increment primary key,
  3.  title varchar(32)
  4. );
  5.  
  6. CREATE TABLE products (
  7.  id int auto_increment primary key,
  8.  name varchar(32),
  9.  cat_id varchar(32)
  10. );
  11.  
  12. INSERT INTO categories (title)
  13. VALUES
  14.   ('Makanan'),
  15.   ('Minuman'),
  16.   ('Hangat'),
  17.   ('Dingin');
  18.  
  19. INSERT INTO products (name, cat_id)
  20.   VALUES
  21.   ('Bakso', '1,3'),
  22.   ('Es Juice', '2,4'),
  23.   ('Pudding', '1,4'),
  24.   ('Kopi', '2,3');
  25.  
  26. SELECT * FROM categories;
  27. +----+---------+
  28. | id | title   |
  29. +----+---------+
  30. |  1 | Makanan |
  31. |  2 | Minuman |
  32. |  3 | Hangat  |
  33. |  4 | Dingin  |
  34. +----+---------+
  35. 4 rows in set (0.00 sec)
  36.  
  37. SELECT * FROM products;
  38.  
  39. +----+----------+--------+
  40. | id | name     | cat_id |
  41. +----+----------+--------+
  42. |  1 | Bakso    | 1,3    |
  43. |  2 | Es Juice | 2,4    |
  44. |  3 | Pudding  | 1,4    |
  45. |  4 | Kopi     | 2,3    |
  46. +----+----------+--------+
  47. 4 rows in set (0.00 sec)
  48.  
  49. SELECT p.id, p.name, GROUP_CONCAT(c.title ORDER BY c.id) as 'categories'
  50. FROM products as p
  51. LEFT JOIN categories AS c
  52.     ON p.cat_id REGEXP CONCAT('[,]{0,1}', c.id, '[,]{0,1}')
  53. GROUP BY p.id;
  54.  
  55. +----+----------+----------------+
  56. | id | name     | categories     |
  57. +----+----------+----------------+
  58. |  1 | Bakso    | Makanan,Hangat |
  59. |  2 | Es Juice | Minuman,Dingin |
  60. |  3 | Pudding  | Makanan,Dingin |
  61. |  4 | Kopi     | Minuman,Hangat |
  62. +----+----------+----------------+
  63. 4 rows in set (0.00 sec)
Add Comment
Please, Sign In to add comment