{"id":2455,"date":"2012-03-29T20:32:34","date_gmt":"2012-03-29T20:32:34","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=2455"},"modified":"2012-03-29T20:48:27","modified_gmt":"2012-03-29T20:48:27","slug":"inner-left-y-right-join","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/","title":{"rendered":"INNER, LEFT y RIGHT JOIN"},"content":{"rendered":"<p>Supongamos que tenemos una Tabla Mysql llamada \u201ccategories\u201d y otra tabla \u201cservices\u201d.<\/p>\n<p>Y nos interesa mostrar en pantalla los servicios que brinda cada categor\u00eda, considerando que cada fila de la tabla \u201cservices\u201d tiene un valor asociado a la categor\u00eda que pertenece.<\/p>\n<p>Al efectuar un INNER JOIN entre la tabla \u00abcategories\u00bb y la tabla \u00abservices\u00bb, Observamos que la categor\u00eda Nueva (category_id=9) queda fuera del listado de resultados puesto que no existe ninguna fila en la tabla \u00abservices\u00bb con category=9.<\/p>\n<pre>SELECT name, title FROM categories c\r\nINNER JOIN services s ON (s.category=c.category_id)<\/pre>\n<p>En la consulta anterio mostramos el nombre de la categor\u00eda y el servicio asociado teniendo en cuenta que las categor\u00edas que no tengan servicios no se muestran en los resultados.<\/p>\n<p>La consulta LEFT JOIN devuelve todas las filas de la tabla citada en la cl\u00e1usula \u201cFROM\u201d y sus filas vinculadas en la tabla citada dentro de la cl\u00e1usula \u201cLEFT JOIN\u201d (incluyendo aquellas filas que no tengan filas vinculadas).<\/p>\n<pre>SELECT name, title FROM categories c\r\nLEFT JOIN services s ON (s.category=c.category_id)<\/pre>\n<p>Al hacer LEFT JOIN estamos dando prioridad a la tabla de la izquierda, es decir, \u00abcategories\u00bb, por tanto, se mostrar\u00e1n todas, aunque no tengan servicios asociados.<\/p>\n<p><a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/leftjoin.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2471\" title=\"leftjoin\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/leftjoin.png\" alt=\"\" width=\"182\" height=\"111\" srcset=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/leftjoin.png 182w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/03\/leftjoin-180x111.png 180w\" sizes=\"auto, (max-width: 182px) 100vw, 182px\" \/><\/a>En el caso del ejemplo, LEFT JOIN nos sirve para listar todas las categor\u00edas y sus servicios correspondientes. Las categor\u00edas que no tienen ning\u00fan servicio tambi\u00e9n formar\u00e1n parte del resultado. (en el caso de INNER JOIN, las categor\u00edas que no tienen servicio quedan fuera).<\/p>\n<p>RIGHT JOIN funciona similar a LEFT JOIN pero en viceversa. Es decir, se listan todas las filas de la tabla Mysql citada en la cl\u00e1usula \u201cRIGHT JOIN\u201d, incluyendo aquellas que no tienen ninguna fila vinculada en la tabla citada dentro de la cl\u00e1usula \u201cFROM\u201d.<\/p>\n<pre>SELECT name, title FROM categories c\r\nRIGHT JOIN services s ON (s.category=c.category_id)<\/pre>\n<p>Si se produjera el caso de que hubiera servicios que no est\u00e1n incluidos en ninguna categor\u00eda, se mostrar\u00edan en este resultado con category=NULL.<\/p>\n<p>Cierto es que estas querys tambi\u00e9n se pueden realizar utilzando la sentencia WHERE de mysql de la siguiente forma:<\/p>\n<pre>SELECT name, title FROM categories c, services s \r\nWHERE s.category=c.category_id<\/pre>\n<p>Por lo tanto, nos estaremos preguntando&#8230;<\/p>\n<p><strong>\u00bfQue ventajas obtenemos al utilizar INNER, LEFT y RIGHT JOIN en vez de introducir las condiciones en el WHERE?<\/strong><\/p>\n<p>La respuesta radica en la optimizaci\u00f3n de consultas. Imaginemos que tenemos una tabla \u00abcategories\u00bb que tenga 50 columnas y la tabla \u00abservices\u00bb tenga 30, al usarla con WHERE lo que estar\u00edamos haciendo es llamar EN MEMORIA a todos los campos de ambas tablas y mostrando las columnas seleccionadas, es decir la sentencia tiene en memoria 80 columnas con sus registros respectivos&#8230; esto es mucha carga y por ello mucho tiempo de respuesta, es decir la consulta es muy lenta y pesada.<\/p>\n<p>Con la misma suposici\u00f3n, lo que facilita el usar el INNER JOIN es que no llama a todos los registros de la tabla, solo llama a los que hayas seleccionado, es decir en memoria no se cargo ni se esta guardando ninguna columna, solo lo que has seleccionado para mostrar&#8230; esto quiere decir m\u00e1s rapidez, menor carga.<\/p>\n<p>Ahora, hay que tener en cuenta que en un software o programa que se implemente, no existe solo una consulta sino decenas de ellas, por ello las consulta o sentencias deben ser agiles, rapidas y leves.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Supongamos que tenemos una Tabla Mysql llamada \u201ccategories\u201d y otra tabla \u201cservices\u201d. Y nos interesa mostrar en pantalla los servicios que brinda cada categor\u00eda, considerando que cada fila de la tabla \u201cservices\u201d tiene un valor asociado a la categor\u00eda que pertenece. Al efectuar un INNER JOIN entre la tabla \u00abcategories\u00bb y la tabla \u00abservices\u00bb, Observamos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6469,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[112],"class_list":["post-2455","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mysql","tag-registros"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>INNER, LEFT y RIGHT JOIN - Jose Aguilar Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"INNER, LEFT y RIGHT JOIN - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Supongamos que tenemos una Tabla Mysql llamada \u201ccategories\u201d y otra tabla \u201cservices\u201d. Y nos interesa mostrar en pantalla los servicios que brinda cada categor\u00eda, considerando que cada fila de la tabla \u201cservices\u201d tiene un valor asociado a la categor\u00eda que pertenece. Al efectuar un INNER JOIN entre la tabla \u00abcategories\u00bb y la tabla \u00abservices\u00bb, Observamos [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2012-03-29T20:32:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-03-29T20:48:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\" \/>\n\t<meta property=\"og:image:width\" content=\"282\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/\",\"name\":\"INNER, LEFT y RIGHT JOIN - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\",\"datePublished\":\"2012-03-29T20:32:34+00:00\",\"dateModified\":\"2012-03-29T20:48:27+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\",\"width\":282,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"INNER, LEFT y RIGHT JOIN\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"INNER, LEFT y RIGHT JOIN - Jose Aguilar Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"INNER, LEFT y RIGHT JOIN - Jose Aguilar Blog","og_description":"Supongamos que tenemos una Tabla Mysql llamada \u201ccategories\u201d y otra tabla \u201cservices\u201d. Y nos interesa mostrar en pantalla los servicios que brinda cada categor\u00eda, considerando que cada fila de la tabla \u201cservices\u201d tiene un valor asociado a la categor\u00eda que pertenece. Al efectuar un INNER JOIN entre la tabla \u00abcategories\u00bb y la tabla \u00abservices\u00bb, Observamos [&hellip;]","og_url":"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2012-03-29T20:32:34+00:00","article_modified_time":"2012-03-29T20:48:27+00:00","og_image":[{"width":282,"height":300,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/","url":"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/","name":"INNER, LEFT y RIGHT JOIN - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","datePublished":"2012-03-29T20:32:34+00:00","dateModified":"2012-03-29T20:48:27+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","width":282,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/inner-left-y-right-join\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"INNER, LEFT y RIGHT JOIN"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/2455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=2455"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/2455\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/6469"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=2455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=2455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=2455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}