{"id":5336,"date":"2026-01-19T17:01:27","date_gmt":"2026-01-19T16:01:27","guid":{"rendered":"https:\/\/sutilweb.eu\/?page_id=5336"},"modified":"2026-01-19T17:01:27","modified_gmt":"2026-01-19T16:01:27","slug":"45-cruzar-tablas-con-inner-join-left-join-y-right-join","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/php\/php-practico\/45-cruzar-tablas-con-inner-join-left-join-y-right-join\/","title":{"rendered":"45. Cruzar tablas con INNER JOIN, LEFT JOIN y RIGHT JOIN"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cuando queremos recuperar informaci\u00f3n de dos o m\u00e1s tablas, vamos a crear un cruce entre ambas tablas, de tal manera que recojamos la informaci\u00f3n que queramos de cada una de las tablas, de la siguiente manera. Para ello existe un comando denominado <strong><em>JOIN.<\/em><\/strong> Para que podamos utilizar este comando tiene que haber una relaci\u00f3n entre dos tablas, en nuestro caso, como en cap\u00edtulos anteriores, entre las tablas <strong><em>reuniones<\/em><\/strong> y la tabla <strong><em>contactos<\/em><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT nombre, apellidos, fecha_hora, lugar FROM contactos JOIN reuniones ON contactos.id = reuniones.contactos_id;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">De esta manera podemos extraer los registros de ambas tablas. Va a hacer un cruce. Este tipo de consulta <strong><em>JOIN<\/em><\/strong> la podremos ver tambi\u00e9n con la palabra <strong><em>INNER JOIN<\/em><\/strong>. El efecto es el mismo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT nombre, apellidos, fecha_hora, lugar FROM contactos INNER JOIN reuniones ON contactos.id = reuniones.contactos_id;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Contactos con los que no hay una reuni\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para mostrar tanto contactos que tengan reuni\u00f3n como los que no tengan, utilizamos la sentencia <strong><em>LEFT JOIN<\/em><\/strong>, de la siguiente manera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT nombre, apellidos, fecha_hora, lugar FROM contactos LEFT JOIN reuniones ON contactos.id = reuniones.contactos_id;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lo que indica es que traiga los registros que tengan reuniones, pero tambi\u00e9n aquellos registros de la tabla de la izquierda <strong><em>(contactos)<\/em><\/strong> que no tengan dicho cruce, por ello se utiliza&nbsp;<strong><em>LEFT<\/em><\/strong>. Los registros que devuelva que no tengan valor, se les pondr\u00e1 el valor de <strong><em>NULL<\/em><\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reuniones que no tienen contactos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Puede que existan reuniones en las cuales la llave for\u00e1nea tenga un valor <strong><em>NULL,<\/em><\/strong> y cuando hagamos la consulta, ese registro no se va a mostrar, para ello utilizamos la cla\u00fasula <strong><em>RIGHT JOIN<\/em><\/strong>, que devuelve todos los registros de la tabla de la derecha, en nuestro caso la tabla <strong><em>reuniones,<\/em><\/strong> de la siguiente manera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT nombre, apellidos, fecha_hora, lugar FROM contactos RIGHT JOIN reuniones ON contactos.id = reuniones.contactos_id;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto lo que hace es primero mostrar el cruce entre ambas tablas, pero despu\u00e9s mostrar la tabla de la derecha (<strong><em>reuniones<\/em><\/strong>) en los que no exista dicho cruce.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando queremos recuperar informaci\u00f3n de dos o m\u00e1s tablas, vamos a crear un cruce entre ambas tablas, de tal manera que recojamos la informaci\u00f3n que queramos de cada una de las tablas, de la siguiente manera. Para ello existe un comando denominado JOIN. Para que podamos utilizar este comando tiene que haber una relaci\u00f3n entre [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4518,"menu_order":44,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","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":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","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":""},"class_list":["post-5336","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"Cuando queremos recuperar informaci\u00f3n de dos o m\u00e1s tablas, vamos a crear un cruce entre ambas tablas, de tal manera que recojamos la informaci\u00f3n que queramos de cada una de las tablas, de la siguiente manera. Para ello existe un comando denominado JOIN. Para que podamos utilizar este comando tiene que haber una relaci\u00f3n entre&hellip;","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=5336"}],"version-history":[{"count":3,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5336\/revisions"}],"predecessor-version":[{"id":5339,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5336\/revisions\/5339"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/4518"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=5336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}