cahyadsn

row group + auto number

Feb 5th, 2015
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.11 KB | None | 0 0
  1. USE test;
  2.  
  3. DROP TABLE IF EXISTS makanan;
  4. CREATE TABLE IF NOT EXISTS makanan(
  5. id_mkn INT,
  6. nama VARCHAR(50),
  7. PRIMARY KEY(id_mkn)
  8. );
  9.  
  10. INSERT INTO makanan
  11. VALUES
  12. (1,'Ayam'),
  13. (2,'Bebek'),
  14. (3,'Kambing'),
  15. (4,'Kelinci'),
  16. (5,'Kuda');
  17.  
  18. SELECT * FROM makanan;
  19.  
  20. +--------+---------+
  21. | id_mkn | nama    |
  22. +--------+---------+
  23. |      1 | Ayam    |
  24. |      2 | Bebek   |
  25. |      3 | Kambing |
  26. |      4 | Kelinci |
  27. |      5 | Kuda    |
  28. +--------+---------+
  29. 5 rows in set (0.02 sec)
  30.  
  31. DROP TABLE IF EXISTS jenis;
  32. CREATE TABLE IF NOT EXISTS  jenis(
  33. id_jenis INT,
  34. id_mkn INT,
  35. jenis VARCHAR(50),
  36. PRIMARY KEY(id_jenis)
  37. );
  38.  
  39. INSERT INTO jenis
  40. VALUES
  41. (1,1,'Goreng'),
  42. (2,2,'Goreng'),
  43. (3,3,'Bakar sate'),
  44. (4,3,'Cincang'),
  45. (5,4,'Sate'),
  46. (6,5,'Sate'),
  47. (7,1,'Bakar'),
  48. (8,1,'Rebus');
  49.  
  50. SELECT * FROM jenis;
  51. +----------+--------+------------+
  52. | id_jenis | id_mkn | jenis      |
  53. +----------+--------+------------+
  54. |        1 |      1 | Goreng     |
  55. |        2 |      2 | Goreng     |
  56. |        3 |      3 | Bakar sate |
  57. |        4 |      3 | Cincang    |
  58. |        5 |      4 | Sate       |
  59. |        6 |      5 | Sate       |
  60. |        7 |      1 | Bakar      |
  61. |        8 |      1 | Rebus      |
  62. +----------+--------+------------+
  63. 8 rows in set (0.00 sec)
  64.  
  65. -- don-t do it at home, it-s very..very dangerous :)
  66.  
  67. SET @iprev=0, @jprev=0;
  68. SELECT makanan,no,jenis FROM
  69. (
  70. SELECT
  71. IF(c.id_jenis IS NULL,'',b.nama) AS makanan,
  72. a.jenis,
  73. @jprev:=if(@iprev=a.id_mkn,@jprev+1,1) AS no,
  74. @iprev:=a.id_mkn AS id_mkn,a.id_jenis
  75. FROM jenis a
  76. JOIN makanan b USING(id_mkn)
  77. LEFT JOIN
  78. (
  79. SELECT MIN(id_jenis) AS id_jenis
  80. FROM jenis
  81. GROUP BY id_mkn
  82. ) c USING(id_jenis)
  83. ORDER BY b.id_mkn,a.id_jenis
  84. ) AS tmp;
  85.  
  86. +---------+------+------------+
  87. | makanan | no   | jenis      |
  88. +---------+------+------------+
  89. | Ayam    |    1 | Goreng     |
  90. |         |    2 | Bakar      |
  91. |         |    3 | Rebus      |
  92. | Bebek   |    1 | Goreng     |
  93. | Kambing |    1 | Bakar sate |
  94. |         |    2 | Cincang    |
  95. | Kelinci |    1 | Sate       |
  96. | Kuda    |    1 | Sate       |
  97. +---------+------+------------+
  98. 8 rows in set (0.00 sec)
Advertisement
Add Comment
Please, Sign In to add comment