{"id":2636,"date":"2026-08-03T09:16:19","date_gmt":"2026-08-03T09:16:19","guid":{"rendered":"https:\/\/us.allassignmentsupport.com\/blog\/?p=2636"},"modified":"2026-08-03T09:16:19","modified_gmt":"2026-08-03T09:16:19","slug":"sql-join-types-explained-inner-left-right-and-full","status":"publish","type":"post","link":"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/","title":{"rendered":"SQL JOIN Types Explained: INNER, LEFT, RIGHT, and FULL"},"content":{"rendered":"<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"3:1-3:511;58-568\">Relational databases store data across multiple normalized tables to avoid redundancy \u2014 a design principle central to relational database theory. JOIN operations are how you recombine that separated data into a single result set for querying. Understanding precisely how each join type determines which rows survive into the output is one of the most consequential skills in relational database work, since choosing the wrong join type silently produces incorrect results without necessarily throwing an error.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_69_1 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/#Setting_Up_the_Example_Tables\" title=\"Setting Up the Example Tables\">Setting Up the Example Tables<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/#INNER_JOIN\" title=\"INNER JOIN\">INNER JOIN<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/#LEFT_JOIN_LEFT_OUTER_JOIN\" title=\"LEFT JOIN (LEFT OUTER JOIN)\">LEFT JOIN (LEFT OUTER JOIN)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/#RIGHT_JOIN_RIGHT_OUTER_JOIN\" title=\"RIGHT JOIN (RIGHT OUTER JOIN)\">RIGHT JOIN (RIGHT OUTER JOIN)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/#FULL_JOIN_FULL_OUTER_JOIN\" title=\"FULL JOIN (FULL OUTER JOIN)\">FULL JOIN (FULL OUTER JOIN)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/#Visual_Summary\" title=\"Visual Summary\">Visual Summary<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/#CROSS_JOIN_A_Different_Category_Entirely\" title=\"CROSS JOIN: A Different Category Entirely\">CROSS JOIN: A Different Category Entirely<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/#Self-Joins_Joining_a_Table_to_Itself\" title=\"Self-Joins: Joining a Table to Itself\">Self-Joins: Joining a Table to Itself<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/#Common_Mistakes_in_Practice\" title=\"Common Mistakes in Practice\">Common Mistakes in Practice<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/us.allassignmentsupport.com\/blog\/sql-join-types-explained-inner-left-right-and-full\/#Frequently_Asked_Questions\" title=\"Frequently Asked Questions\">Frequently Asked Questions<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\" data-sourcepos=\"5:1-5:33;570-602\"><span class=\"ez-toc-section\" id=\"Setting_Up_the_Example_Tables\"><\/span>Setting Up the Example Tables<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"7:1-7:59;604-662\">Consider two tables from a university enrollment database:<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"9:1-9:13;664-676\"><strong>Students<\/strong><\/p>\n<div class=\"overflow-x-auto w-full px-2 mb-6 print:overflow-x-visible\" dir=\"ltr\" data-sourcepos=\"10:1-15:14;677-762\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">student_id<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">name<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">1<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Amara<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">2<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Ben<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">3<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Chloe<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">4<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">David<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"17:1-17:16;764-779\"><strong>Enrollments<\/strong><\/p>\n<div class=\"overflow-x-auto w-full px-2 mb-6 print:overflow-x-visible\" dir=\"ltr\" data-sourcepos=\"18:1-23:25;780-931\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">enrollment_id<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">student_id<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">course<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">101<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">1<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Statistics<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">102<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">1<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Databases<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">103<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">2<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Databases<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">104<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">5<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Statistics<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"25:1-25:345;933-1277\">Notice two deliberate irregularities: <strong>David (student_id 4)<\/strong> has no enrollment record, and there&#8217;s an enrollment for <strong>student_id 5<\/strong>, which doesn&#8217;t exist in the Students table (perhaps a data entry error, or a student who withdrew). These irregularities are exactly what makes the different join types produce meaningfully different results.<\/p>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\" data-sourcepos=\"27:1-27:14;1279-1292\"><span class=\"ez-toc-section\" id=\"INNER_JOIN\"><\/span>INNER JOIN<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"29:1-29:129;1294-1422\">An INNER JOIN returns only rows where the join condition is satisfied in <strong>both<\/strong> tables \u2014 the intersection of matching records.<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"sql code\" data-sourcepos=\"31:1-35:4;1424-1531\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">sql<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5\"><code class=\"language-sql\">SELECT s.name, e.course\r\nFROM Students s\r\nINNER JOIN Enrollments e ON s.student_id = e.student_id;<\/code><\/pre>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"37:1-37:12;1533-1544\"><strong>Result:<\/strong><\/p>\n<div class=\"overflow-x-auto w-full px-2 mb-6 print:overflow-x-visible\" dir=\"ltr\" data-sourcepos=\"38:1-42:20;1545-1637\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">name<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">course<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Amara<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Statistics<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Amara<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Databases<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Ben<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Databases<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"44:1-44:213;1639-1851\">David is excluded (no matching enrollment), and the orphaned enrollment for student_id 5 is excluded (no matching student). INNER JOIN is the most restrictive join type \u2014 it only surfaces genuinely matched pairs.<\/p>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\" data-sourcepos=\"46:1-46:31;1853-1883\"><span class=\"ez-toc-section\" id=\"LEFT_JOIN_LEFT_OUTER_JOIN\"><\/span>LEFT JOIN (LEFT OUTER JOIN)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"48:1-48:172;1885-2056\">A LEFT JOIN returns <strong>all rows from the left table<\/strong>, along with matching rows from the right table. Where no match exists, the right table&#8217;s columns are filled with NULL.<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"sql code\" data-sourcepos=\"50:1-54:4;2058-2164\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">sql<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5\"><code class=\"language-sql\">SELECT s.name, e.course\r\nFROM Students s\r\nLEFT JOIN Enrollments e ON s.student_id = e.student_id;<\/code><\/pre>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"56:1-56:12;2166-2177\"><strong>Result:<\/strong><\/p>\n<div class=\"overflow-x-auto w-full px-2 mb-6 print:overflow-x-visible\" dir=\"ltr\" data-sourcepos=\"57:1-63:17;2178-2304\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">name<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">course<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Amara<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Statistics<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Amara<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Databases<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Ben<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Databases<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Chloe<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">NULL<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">David<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">NULL<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"65:1-65:221;2306-2526\">Now Chloe and David both appear, even though neither has an enrollment record \u2014 this is precisely the value of LEFT JOIN: it lets you identify students with no enrollments, which an INNER JOIN would have silently hidden.<\/p>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\" data-sourcepos=\"67:1-67:33;2528-2560\"><span class=\"ez-toc-section\" id=\"RIGHT_JOIN_RIGHT_OUTER_JOIN\"><\/span>RIGHT JOIN (RIGHT OUTER JOIN)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"69:1-69:143;2562-2704\">A RIGHT JOIN is the mirror image of LEFT JOIN: it returns <strong>all rows from the right table<\/strong>, with unmatched left-table columns filled as NULL.<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"sql code\" data-sourcepos=\"71:1-75:4;2706-2813\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">sql<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5\"><code class=\"language-sql\">SELECT s.name, e.course\r\nFROM Students s\r\nRIGHT JOIN Enrollments e ON s.student_id = e.student_id;<\/code><\/pre>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"77:1-77:12;2815-2826\"><strong>Result:<\/strong><\/p>\n<div class=\"overflow-x-auto w-full px-2 mb-6 print:overflow-x-visible\" dir=\"ltr\" data-sourcepos=\"78:1-83:22;2827-2941\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">name<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">course<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Amara<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Statistics<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Amara<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Databases<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Ben<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Databases<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">NULL<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Statistics<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"85:1-85:356;2943-3298\">The orphaned enrollment (student_id 5) now appears, with a NULL name, since no matching student exists. This surfaces exactly the kind of referential integrity problem \u2014 an enrollment referencing a student that doesn&#8217;t exist \u2014 that a well-designed foreign key constraint should normally prevent, but which can still occur in poorly maintained legacy data.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"87:1-87:274;3300-3573\">In practice, RIGHT JOIN is used far less often than LEFT JOIN, because most analysts write queries with the &#8220;primary&#8221; table first and simply switch to LEFT JOIN rather than reordering tables to use RIGHT JOIN \u2014 the two are logically interchangeable by swapping table order.<\/p>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\" data-sourcepos=\"89:1-89:31;3575-3605\"><span class=\"ez-toc-section\" id=\"FULL_JOIN_FULL_OUTER_JOIN\"><\/span>FULL JOIN (FULL OUTER JOIN)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"91:1-91:126;3607-3732\">A FULL JOIN returns <strong>all rows from both tables<\/strong>, matching where possible and filling NULLs on whichever side lacks a match.<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"sql code\" data-sourcepos=\"93:1-97:4;3734-3840\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">sql<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5\"><code class=\"language-sql\">SELECT s.name, e.course\r\nFROM Students s\r\nFULL JOIN Enrollments e ON s.student_id = e.student_id;<\/code><\/pre>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"99:1-99:12;3842-3853\"><strong>Result:<\/strong><\/p>\n<div class=\"overflow-x-auto w-full px-2 mb-6 print:overflow-x-visible\" dir=\"ltr\" data-sourcepos=\"100:1-107:22;3854-4002\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">name<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">course<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Amara<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Statistics<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Amara<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Databases<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Ben<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Databases<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Chloe<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">NULL<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">David<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">NULL<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">NULL<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Statistics<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"109:1-109:329;4004-4332\">This is the union of everything the LEFT and RIGHT joins would have shown individually \u2014 every student regardless of enrollment status, and every enrollment regardless of whether it references a valid student. FULL JOIN is particularly useful for data quality auditing, since it surfaces mismatches on both sides simultaneously.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"111:1-111:152;4334-4485\">Note: MySQL doesn&#8217;t natively support FULL JOIN; the equivalent result is typically constructed with a LEFT JOIN combined with a RIGHT JOIN via <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">UNION<\/code>.<\/p>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\" data-sourcepos=\"113:1-113:18;4487-4504\"><span class=\"ez-toc-section\" id=\"Visual_Summary\"><\/span>Visual Summary<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"overflow-x-auto w-full px-2 mb-6 print:overflow-x-visible\" dir=\"ltr\" data-sourcepos=\"115:1-120:66;4506-4825\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Join type<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Rows returned<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">INNER JOIN<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Only rows with matches in both tables<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">LEFT JOIN<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">All left-table rows, matched right-table rows where they exist<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">RIGHT JOIN<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">All right-table rows, matched left-table rows where they exist<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">FULL JOIN<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">All rows from both tables, matched where possible<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\" data-sourcepos=\"122:1-122:45;4827-4871\"><span class=\"ez-toc-section\" id=\"CROSS_JOIN_A_Different_Category_Entirely\"><\/span>CROSS JOIN: A Different Category Entirely<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"124:1-124:211;4873-5083\">Worth distinguishing from the four above: a CROSS JOIN produces the <strong>Cartesian product<\/strong> of two tables \u2014 every row from the first table paired with every row from the second, with no matching condition at all.<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"sql code\" data-sourcepos=\"126:1-130:4;5085-5161\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">sql<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5\"><code class=\"language-sql\">SELECT s.name, e.course\r\nFROM Students s\r\nCROSS JOIN Enrollments e;<\/code><\/pre>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"132:1-132:435;5163-5597\">With 4 students and 4 enrollments, this returns 16 rows (4 \u00d7 4) \u2014 every possible combination, regardless of whether any relationship exists between them. CROSS JOIN is rarely used in typical business queries, but it&#8217;s genuinely useful for generating combinations deliberately \u2014 for example, pairing every product with every region to build a complete pricing matrix template, even before actual sales data exists for each combination.<\/p>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\" data-sourcepos=\"134:1-134:41;5599-5639\"><span class=\"ez-toc-section\" id=\"Self-Joins_Joining_a_Table_to_Itself\"><\/span>Self-Joins: Joining a Table to Itself<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"136:1-136:312;5641-5952\">A self-join isn&#8217;t a distinct join type technically \u2014 it&#8217;s simply an INNER, LEFT, or other join where both sides reference the same table, typically used for hierarchical or relational data within a single table. For example, an Employees table with a <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">manager_id<\/code> column referencing another row&#8217;s <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">employee_id<\/code>:<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"sql code\" data-sourcepos=\"138:1-142:4;5954-6081\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">sql<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5\"><code class=\"language-sql\">SELECT e.name AS employee, m.name AS manager\r\nFROM Employees e\r\nLEFT JOIN Employees m ON e.manager_id = m.employee_id;<\/code><\/pre>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"144:1-144:173;6083-6255\">This finds each employee&#8217;s manager&#8217;s name by joining the Employees table to itself, using table aliases (<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">e<\/code> and <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">m<\/code>) to distinguish the two &#8220;copies&#8221; within the same query.<\/p>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\" data-sourcepos=\"146:1-146:31;6257-6287\"><span class=\"ez-toc-section\" id=\"Common_Mistakes_in_Practice\"><\/span>Common Mistakes in Practice<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3 print:block print:space-y-1\" dir=\"ltr\" data-sourcepos=\"148:1-151:234;6289-7302\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"148:1-148:242;6289-6530\"><strong>Using INNER JOIN when LEFT JOIN was needed<\/strong> \u2014 silently dropping rows without matches (like David, who has no enrollments) is often not what the analysis actually intends, and produces an undercount that isn&#8217;t obviously wrong at a glance<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"149:1-149:208;6531-6738\"><strong>Forgetting to handle NULLs after an outer join<\/strong> \u2014 aggregate functions like <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">COUNT()<\/code> behave differently on NULL values than on actual data, so downstream calculations need to account for this explicitly<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"150:1-150:330;6739-7068\"><strong>Confusing WHERE clause filtering with JOIN conditions<\/strong> \u2014 placing a filter on the &#8220;outer&#8221; side of a LEFT JOIN in the WHERE clause (rather than the ON clause) can inadvertently convert it into behaving like an INNER JOIN, since WHERE evaluates after the join and would exclude the NULL rows the LEFT JOIN was meant to preserve<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"151:1-151:234;7069-7302\"><strong>Assuming RIGHT JOIN and LEFT JOIN are functionally different<\/strong> \u2014 they&#8217;re logically equivalent operations with table order swapped; there&#8217;s no capability RIGHT JOIN provides that LEFT JOIN doesn&#8217;t, given appropriate table ordering<\/li>\n<\/ul>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\" data-sourcepos=\"153:1-153:30;7304-7333\"><span class=\"ez-toc-section\" id=\"Frequently_Asked_Questions\"><\/span>Frequently Asked Questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"155:1-156:245;7335-7637\"><strong>Why would I use a LEFT JOIN instead of an INNER JOIN?<\/strong> When you need to preserve all records from the &#8220;primary&#8221; table regardless of whether a match exists in the related table \u2014 for example, listing all students including those with no course enrollments, which an INNER JOIN would silently exclude.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"158:1-159:160;7639-7855\"><strong>Does SQL support FULL JOIN in every database system?<\/strong> Not universally \u2014 PostgreSQL, SQL Server, and Oracle support FULL JOIN directly, while MySQL requires simulating it with a UNION of a LEFT JOIN and RIGHT JOIN.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"161:1-162:284;7857-8227\"><strong>What happens if I put a filter condition in WHERE instead of ON for an outer join?<\/strong> It can unintentionally eliminate the very NULL rows the outer join was designed to preserve, effectively making the query behave like an INNER JOIN. Filter conditions specific to the join relationship should generally go in the ON clause; filters on the final result set go in WHERE.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" data-sourcepos=\"164:1-165:195;8229-8466\"><strong>Is a self-join a separate SQL keyword?<\/strong> No \u2014 there&#8217;s no dedicated &#8220;SELF JOIN&#8221; syntax. It&#8217;s simply any join type (commonly INNER or LEFT) applied where both sides of the join reference the same table, distinguished using table aliases.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Relational databases store data across multiple normalized tables to avoid redundancy \u2014 a design principle central to relational database theory. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2639,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"none","_seopress_titles_title":"SQL JOIN Types Explained: INNER, LEFT, RIGHT, FULL","_seopress_titles_desc":"Understand SQL JOIN types with a worked student-enrollment example \u2014 INNER, LEFT, RIGHT, FULL, CROSS JOIN, and self-joins explained in depth.","_seopress_robots_index":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[5,6,21],"tags":[1010,1029,978,1037,976],"class_list":["post-2636","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-academics","category-assignment-help","category-assignment-writing","tag-computer-science","tag-data-analysis","tag-database-management","tag-relational-databases","tag-sql"],"_links":{"self":[{"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/posts\/2636"}],"collection":[{"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/comments?post=2636"}],"version-history":[{"count":1,"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/posts\/2636\/revisions"}],"predecessor-version":[{"id":2640,"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/posts\/2636\/revisions\/2640"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/media\/2639"}],"wp:attachment":[{"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/media?parent=2636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/categories?post=2636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/us.allassignmentsupport.com\/blog\/wp-json\/wp\/v2\/tags?post=2636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}