Guest User

Untitled

a guest
Jan 22nd, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.33 KB | None | 0 0
  1. select mt1.*, json_agg(mt2.*)
  2. from menutable mt1
  3. join menutable mt2 on mt1.id = mt2.üstmenuid
  4. group by mt1.id;
  5.  
  6. {
  7. "results": [
  8. {
  9. "id": 4,
  10. "menuadi": "Ortak Haberler",
  11. "üstmenuid": null,
  12. "json_agg": [
  13. {
  14. "id": 5,
  15. "menuadi": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
  16. "üstmenuid": 4
  17. },
  18. {
  19. "id": 6,
  20. "menuadi": "Sed eget ipsum sit amet massa varius commodo",
  21. "üstmenuid": 4
  22. }
  23. ]
  24. },
  25. {
  26. "id": 1,
  27. "menuadi": "Ortak Konulu Mansetler",
  28. "üstmenuid": null,
  29. "json_agg": [
  30. {
  31. "id": 2,
  32. "menuadi": "In hac habitasse platea dictumst",
  33. "üstmenuid": 1
  34. },
  35. {
  36. "id": 3,
  37. "menuadi": "Nullam molestie augue sit amet magna bibendum imperdiet.",
  38. "üstmenuid": 1
  39. }
  40. ]
  41. }
  42. ]
  43. }
  44.  
  45. SELECT mt1.*, mt2.*
  46. FROM dbo.MenuTable AS mt1
  47. JOIN dbo.MenuTable AS mt2 ON mt1.ID = mt2.UstMenuID;
  48. GROUP BY mt1.ID, mt1.MenuAdi, mt1.UstMenuID, mt2.ID, mt2.MenuAdi, mt2.UstMenuID
  49.  
  50. {
  51. "results": [
  52. {
  53. "ID": 2,
  54. "MenuAdi": "In hac habitasse platea dictumst",
  55. "UstMenuID": 1
  56. },
  57. {
  58. "ID": 3,
  59. "MenuAdi": "Nullam molestie augue sit amet magna bibendum imperdiet.",
  60. "UstMenuID": 1
  61. },
  62. {
  63. "ID": 5,
  64. "MenuAdi": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
  65. "UstMenuID": 4
  66. },
  67. {
  68. "ID": 6,
  69. "MenuAdi": "Sed eget ipsum sit amet massa varius commodo",
  70. "UstMenuID": 4
  71. }
  72. ]
  73. }
  74.  
  75. create table menutable (
  76. id int primary key
  77. , menuadi text
  78. , ustmenuid int null references menutable (id)
  79. );
  80. insert into menutable values
  81. (1,'Ortak Konulu Mansetler',null)
  82. ,(2,'Kayseri Deki Bombalı Saldırının Yansımaları',1)
  83. ,(3,'Sayın Cumhurbaşkanımızın Trabzon Daki Açıklamalarının Yansımaları',1)
  84. ,(4,'Ortak Haberler',null)
  85. ,(5,'Sayın Hanımefendinin Trabzonda Şehit Aileleriyle Bir Araya Gelmesinin Yansımaları',4)
  86. ,(6,'Türk Meslektaşlarımızın Yanındayız',4);
  87.  
  88. select mt1.*, json_agg(mt2.*)
  89. from menutable mt1
  90. join menutable mt2 on mt1.id = mt2.ustmenuid
  91. group by mt1.id;
  92.  
  93. +----+------------------------+-----------+-----------------------------------------------------------------------------------------------------------------------+
  94. | id | menuadi | ustmenuid | json_agg |
  95. +----+------------------------+-----------+-----------------------------------------------------------------------------------------------------------------------+
  96. | 1 | Ortak Konulu Mansetler | NULL | [{"id":2,"menuadi":"Kayseri Deki Bombalı Saldırının Yansımaları","ustmenuid":1} |
  97. | | | | , {"id":3,"menuadi":"Sayın Cumhurbaşkanımızın Trabzon Daki Açıklamalarının Yansımaları","ustmenuid":1}] |
  98. | 4 | Ortak Haberler | NULL | [{"id":5,"menuadi":"Sayın Hanımefendinin Trabzonda Şehit Aileleriyle Bir Araya Gelmesinin Yansımaları","ustmenuid":4} |
  99. | | | | , {"id":6,"menuadi":"Türk Meslektaşlarımızın Yanındayız","ustmenuid":4}] |
  100. +----+------------------------+-----------+-----------------------------------------------------------------------------------------------------------------------+
  101.  
  102. create table menutable (
  103. id int primary key
  104. , menuadi nvarchar(128)
  105. , ustmenuid int null references menutable (id)
  106. );
  107. insert into menutable values
  108. (1,'Ortak Konulu Mansetler',null)
  109. ,(2,'Kayseri Deki Bombalı Saldırının Yansımaları',1)
  110. ,(3,'Sayın Cumhurbaşkanımızın Trabzon Daki Açıklamalarının Yansımaları',1)
  111. ,(4,'Ortak Haberler',null)
  112. ,(5,'Sayın Hanımefendinin Trabzonda Şehit Aileleriyle Bir Araya Gelmesinin Yansımaları',4)
  113. ,(6,'Türk Meslektaşlarımızın Yanındayız',4);
  114.  
  115. select mt1.*, [json_agg]=dbo.FlattenedJson (
  116. ( select mt2.*
  117. from menutable mt2
  118. where mt2.ustmenuid = mt1.id
  119. for xml path, root
  120. )
  121. )
  122. from menutable mt1
  123. where mt1.ustmenuid is null
  124.  
  125. +----+------------------------+-----------+---------------------------------------------------------------------------------------------------------------------------+
  126. | id | menuadi | ustmenuid | json_agg |
  127. +----+------------------------+-----------+---------------------------------------------------------------------------------------------------------------------------+
  128. | 1 | Ortak Konulu Mansetler | NULL | [ |
  129. | | | | {"id":"2","menuadi":"Kayseri Deki Bombali Saldirinin Yansimalari","ustmenuid":"1"}, |
  130. | | | | {"id":"3","menuadi":"Sayin Cumhurbaskanimizin Trabzon Daki Açiklamalarinin Yansimalari","ustmenuid":"1"} |
  131. | | | | ] |
  132. | 4 | Ortak Haberler | NULL | [ |
  133. | | | | {"id":"5","menuadi":"Sayin Hanimefendinin Trabzonda Sehit Aileleriyle Bir Araya Gelmesinin Yansimalari","ustmenuid":"4"}, |
  134. | | | | {"id":"6","menuadi":"Türk Meslektaslarimizin Yanindayiz","ustmenuid":"4"} |
  135. | | | | ] |
  136. +----+------------------------+-----------+---------------------------------------------------------------------------------------------------------------------------+
Add Comment
Please, Sign In to add comment