{"id":603,"date":"2018-05-26T16:09:42","date_gmt":"2018-05-26T09:09:42","guid":{"rendered":"http:\/\/www.oopsbox.com\/?p=603"},"modified":"2018-05-26T16:22:43","modified_gmt":"2018-05-26T09:22:43","slug":"hierarchical-and-recursive-queries-in-mysql","status":"publish","type":"post","link":"https:\/\/www.oopsbox.com\/?p=603","title":{"rendered":"Hierarchical and recursive queries in MySQL"},"content":{"rendered":"<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Hierarchical_and_recursive_queries_in_SQL\">Hierarchical query<\/a> \u0e04\u0e37\u0e2d\u0e2d\u0e30\u0e44\u0e23 ?<\/p>\n<blockquote><p>A hierarchical query is a type of SQL query that handles hierarchical model data. They are special cases of more general recursive fixpoint queries, which compute transitive closures.<\/p><\/blockquote>\n<p>\u0e2d\u0e22\u0e32\u0e01\u0e1a\u0e2d\u0e01(\u0e1a\u0e48\u0e19) \u0e27\u0e48\u0e32\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48 MySQL 8 \u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e19\u0e35\u0e48\u0e01\u0e32\u0e23\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e15\u0e49\u0e19\u0e44\u0e21\u0e49 (Tree) \u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e42\u0e04\u0e15\u0e23\u0e40\u0e1b\u0e25\u0e37\u0e2d\u0e07\u0e1e\u0e25\u0e31\u0e07\u0e07\u0e32\u0e19 \u0e41\u0e15\u0e48\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e14\u0e35\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e01 \u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e1a\u0e04\u0e38\u0e13\u0e08\u0e23\u0e34\u0e07 \u0e46 \u0e17\u0e35\u0e48 MySQL \u0e2d\u0e34\u0e21\u0e1e\u0e25\u0e35\u0e40\u0e21\u0e19\u0e15\u0e4c Common Table Expression (CTE) \u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e0b\u0e30\u0e17\u0e35 \u0e40\u0e02\u0e35\u0e22\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e2a\u0e31\u0e49\u0e19\u0e25\u0e07 \u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e20\u0e32\u0e1e\u0e14\u0e35\u0e02\u0e36\u0e49\u0e19 (\u0e01\u0e47\u0e41\u0e2b\u0e07\u0e2a\u0e34\u0e40\u0e08\u0e49\u0e32\u0e02\u0e2d\u0e07\u0e40\u0e04\u0e49\u0e32\u0e17\u0e33\u0e2d\u0e2d\u0e01\u0e21\u0e32\u0e40\u0e2d\u0e07)<\/p>\n<p>\u0e22\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e41\u0e1a\u0e1a\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 \u0e40\u0e0a\u0e48\u0e19 \u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e2d\u0e07\u0e04\u0e4c\u0e01\u0e23 \u0e40\u0e18\u0e23\u0e14\u0e43\u0e19\u0e04\u0e2d\u0e21\u0e40\u0e21\u0e19\u0e15\u0e4c\u0e15\u0e48\u0e32\u0e07 \u0e46 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 Categories and sub-categories \u0e17\u0e35\u0e48\u0e40\u0e2b\u0e47\u0e19\u0e20\u0e32\u0e1e\u0e0a\u0e31\u0e14 \u0e46\u00a0 \u0e40\u0e25\u0e22\u0e04\u0e37\u0e2d \u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e2d\u0e07\u0e04\u0e4c\u0e01\u0e23 (Organization charts ) \u0e19\u0e35\u0e48\u0e07\u0e48\u0e32\u0e22\u0e2a\u0e38\u0e14\u0e25\u0e30 \u0e21\u0e35\u0e2b\u0e31\u0e27\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e39\u0e17\u0e41\u0e25\u0e30\u0e21\u0e35\u0e25\u0e39\u0e01\u0e19\u0e49\u0e2d\u0e07\u0e43\u0e19\u0e04\u0e27\u0e32\u0e21\u0e14\u0e39\u0e41\u0e25\u0e41\u0e25\u0e30\u0e1a\u0e32\u0e07\u0e17\u0e35\u0e25\u0e39\u0e01\u0e19\u0e49\u0e2d\u0e07\u0e01\u0e47\u0e21\u0e35\u0e40\u0e1a\u0e49\u0e15\u0e48\u0e2d\u0e25\u0e07\u0e44\u0e1b\u0e2d\u0e35\u0e01\u0e17\u0e35 \u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e23\u0e39\u0e1b\u0e19\u0e35\u0e49\u0e40\u0e25\u0e22<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-605\" src=\"https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526153727-1035x546-1024x540.png\" alt=\"\" width=\"700\" height=\"369\" srcset=\"https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526153727-1035x546-1024x540.png 1024w, https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526153727-1035x546-300x158.png 300w, https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526153727-1035x546-768x405.png 768w, https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526153727-1035x546-700x369.png 700w, https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526153727-1035x546.png 1035w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><br \/>\n\u0e27\u0e48\u0e32\u0e41\u0e25\u0e49\u0e27\u0e01\u0e47\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 MySQL 8 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e31\u0e19<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">docker run -d -p 3306:3306 --name mysqltest --restart always -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=demo mysql:8<\/pre>\n<p>\u0e42\u0e14\u0e22\u0e18\u0e23\u0e23\u0e21\u0e40\u0e19\u0e35\u0e22\u0e21\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b \u0e02\u0e2d\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e19\u0e35\u0e49\u0e01\u0e47\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e04\u0e25\u0e49\u0e32\u0e22 \u0e46 \u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49 \u0e42\u0e14\u0e22\u0e43\u0e2b\u0e49\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e20\u0e4c parent \u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2b\u0e31\u0e27\u0e2b\u0e19\u0e49\u0e32<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">DROP TABLE IF EXISTS category;\r\nCREATE TABLE IF NOT EXISTS category(\r\n        id INT AUTO_INCREMENT PRIMARY KEY,\r\n        name VARCHAR(20) NOT NULL,\r\n        parent INT DEFAULT NULL\r\n);\r\n\r\nINSERT INTO category VALUES\r\n(1,'Root A', NULL),\r\n(2,'Item 1', 1),\r\n(3,'Item 2', 1),\r\n(4,'Item 3', 3),\r\n(5,'Root B', NULL),\r\n(6,'Item 4', 5),\r\n(7,'Item 5', 6),\r\n(8,'Root C', NULL),\r\n(9,'Item 6', 8);<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-606\" src=\"https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526154218-722x560.png\" alt=\"\" width=\"722\" height=\"560\" srcset=\"https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526154218-722x560.png 722w, https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526154218-722x560-300x233.png 300w, https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526154218-722x560-700x543.png 700w\" sizes=\"auto, (max-width: 722px) 100vw, 722px\" \/><\/p>\n<p>\u0e01\u0e32\u0e23\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30 Recursive MySQL \u0e44\u0e14\u0e49\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e49\u0e27 \u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">with_clause:\r\n    WITH [RECURSIVE]\r\n        cte_name [(col_name [, col_name] ...)] AS (subquery)\r\n        [, cte_name [(col_name [, col_name] ...)] AS (subquery)] ...<\/pre>\n<p>\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e02\u0e2d\u0e07\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e19\u0e35\u0e49\u0e04\u0e37\u0e2d<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-607\" src=\"https:\/\/www.oopsbox.com\/wp-content\/uploads\/MySQL-Recursive-CTE.png\" alt=\"\" width=\"702\" height=\"315\" srcset=\"https:\/\/www.oopsbox.com\/wp-content\/uploads\/MySQL-Recursive-CTE.png 702w, https:\/\/www.oopsbox.com\/wp-content\/uploads\/MySQL-Recursive-CTE-300x135.png 300w, https:\/\/www.oopsbox.com\/wp-content\/uploads\/MySQL-Recursive-CTE-700x314.png 700w\" sizes=\"auto, (max-width: 702px) 100vw, 702px\" \/><br \/>\n*\u0e20\u0e32\u0e1e\u0e08\u0e32\u0e01 <a href=\"http:\/\/www.mysqltutorial.org\/mysql-recursive-cte\/\">mysqltutorial : A Definitive Guide To MySQL Recursive CTE<\/a><\/p>\n<p>\u0e40\u0e23\u0e32\u0e21\u0e32\u0e14\u0e39\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e01\u0e31\u0e19<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">WITH RECURSIVE categorypath(id, name, dept, breadcrumbs) AS\r\n(\r\n  SELECT id, name, 0, CAST(name AS CHAR(1000))\r\n  FROM category \r\n  WHERE parent IS NULL\r\n  UNION ALL\r\n  SELECT c.id, c.name, cp.dept + 1, CONCAT_WS('\/', cp.breadcrumbs, c.name) \r\n  FROM categorypath cp \r\n    JOIN category c ON cp.id = c.parent\r\n)\r\nSELECT * FROM categorypath ORDER BY breadcrumbs;<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-608\" src=\"https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526160205-725x291.png\" alt=\"\" width=\"725\" height=\"291\" srcset=\"https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526160205-725x291.png 725w, https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526160205-725x291-300x120.png 300w, https:\/\/www.oopsbox.com\/wp-content\/uploads\/Screenshot-20180526160205-725x291-700x281.png 700w\" sizes=\"auto, (max-width: 725px) 100vw, 725px\" \/><\/p>\n<p>\u0e44\u0e1b\u0e2d\u0e48\u0e32\u0e19\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49\u0e17\u0e35\u0e48<\/p>\n<ul>\n<li>https:\/\/mysqlserverteam.com\/mysql-8-0-labs-recursive-common-table-expressions-in-mysql-ctes\/<\/li>\n<li>https:\/\/www.percona.com\/live\/17\/sites\/default\/files\/slides\/Recursive%20Query%20Throwdown.pdf<\/li>\n<li>https:\/\/en.wikipedia.org\/wiki\/Hierarchical_and_recursive_queries_in_SQL<\/li>\n<\/ul>\n<p>\u0e08\u0e1a\u0e1b\u0e34\u0e4a\u0e07 ^__^<br \/>\n\u0e1b.\u0e25.1 \u0e27\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14 \u0e27\u0e31\u0e19\u0e1d\u0e19\u0e15\u0e01\u0e09\u0e31\u0e19\u0e04\u0e27\u0e23\u0e19\u0e2d\u0e19\u0e01\u0e01\u0e43\u0e04\u0e23\u0e2a\u0e31\u0e01\u0e04\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e15\u0e49\u0e1c\u0e49\u0e32\u0e2b\u0e48\u0e21\u0e19\u0e35\u0e48\u0e19\u0e32<br \/>\n\u0e1b.\u0e25.2 \u0e40\u0e28\u0e23\u0e49\u0e32\u0e32\u0e32\u0e27\u0e31\u0e19\u0e17\u0e33\u0e07\u0e32\u0e19<\/p>\n<ul>\n<li><\/li>\n<\/ul>\n<div id=\"s-share-buttons\" class=\"\"><div class=\"s-single-share\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fb-share-button\" data-href=\"https:\/\/www.oopsbox.com\/?p=603\" data-type=\"button_count\"><\/div><\/div><div class=\"s-single-share\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\"><\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div><div class=\"s-single-share\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"g-plusone\" data-size=\"medium\"><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><div class=\"s-single-share\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\/\/www.pinterest.com\/pin\/create\/button\/\" data-pin-do=\"buttonBookmark\"  data-pin-color=\"red\"><img decoding=\"async\" src=\"\/\/assets.pinterest.com\/images\/pidgets\/pinit_fg_en_rect_red_20.png\" \/><\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<script type=\"text\/javascript\" async defer src=\"\/\/assets.pinterest.com\/js\/pinit.js\"><\/script>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div><div class=\"s-single-share\">\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"mailto:?Subject=Hierarchical%20and%20recursive%20queries%20in%20MySQL&Body=Here%20is%20the%20link%20to%20the%20article:%20https:\/\/www.oopsbox.com\/?p=603\" title=\"Email\" class=\"s3-email\"><img decoding=\"async\" src=\"https:\/\/www.oopsbox.com\/wp-content\/plugins\/simple-social-share\/includes\/..\/images\/share-email.png\"><\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Hierarchical query \u0e04\u0e37\u0e2d\u0e2d\u0e30\u0e44\u0e23 ? A hierarchical query is a type of SQL query that handles hierarchical model data. They are special cases of more general recursive fixpoint queries, which compute transitive closures. \u0e2d\u0e22\u0e32\u0e01\u0e1a\u0e2d\u0e01(\u0e1a\u0e48\u0e19) \u0e27\u0e48\u0e32\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48 MySQL 8 \u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e19\u0e35\u0e48\u0e01\u0e32\u0e23\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e15\u0e49\u0e19\u0e44\u0e21\u0e49 (Tree) \u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e42\u0e04\u0e15\u0e23\u0e40\u0e1b\u0e25\u0e37\u0e2d\u0e07\u0e1e\u0e25\u0e31\u0e07\u0e07\u0e32\u0e19 \u0e41\u0e15\u0e48\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e14\u0e35\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e01 \u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e1a\u0e04\u0e38\u0e13\u0e08\u0e23\u0e34\u0e07 \u0e46 \u0e17\u0e35\u0e48 MySQL \u0e2d\u0e34\u0e21\u0e1e\u0e25\u0e35\u0e40\u0e21\u0e19\u0e15\u0e4c Common Table Expression (CTE) \u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e0b\u0e30\u0e17\u0e35 \u0e40\u0e02\u0e35\u0e22\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e2a\u0e31\u0e49\u0e19\u0e25\u0e07 \u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e20\u0e32\u0e1e\u0e14\u0e35\u0e02\u0e36\u0e49\u0e19 (\u0e01\u0e47\u0e41\u0e2b\u0e07\u0e2a\u0e34\u0e40\u0e08\u0e49\u0e32\u0e02\u0e2d\u0e07\u0e40\u0e04\u0e49\u0e32\u0e17\u0e33\u0e2d\u0e2d\u0e01\u0e21\u0e32\u0e40\u0e2d\u0e07) \u0e22\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e41\u0e1a\u0e1a\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 \u0e40\u0e0a\u0e48\u0e19 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.oopsbox.com\/?p=603\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Hierarchical and recursive queries in MySQL&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":609,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[5],"tags":[64,65,12],"class_list":["post-603","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-cte","tag-hierarchical-data","tag-mysql","entry"],"views":4602,"_links":{"self":[{"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=\/wp\/v2\/posts\/603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=603"}],"version-history":[{"count":6,"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=\/wp\/v2\/posts\/603\/revisions"}],"predecessor-version":[{"id":615,"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=\/wp\/v2\/posts\/603\/revisions\/615"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=\/wp\/v2\/media\/609"}],"wp:attachment":[{"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.oopsbox.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}