⊗ppPmDOGD 382 of 447 menu

Obtención de datos de tablas relacionadas en PHP

Hagamos una consulta que obtenga todos los usuarios junto con sus ciudades. Para ello necesitaremos el comando LEFT JOIN:

Su sintaxis es la siguiente:

SELECT campos FROM nombre_tabla LEFT JOIN nombre_tabla_relacionada ON condición_vinculación WHERE condición_selección

Analicemos las partes individuales de la sintaxis de este comando.

Campos

Dado que la selección se realiza desde varias tablas, seleccionar todos los campos mediante * no funcionará. La siguiente consulta seleccionará campos solo de la tabla principal, pero no de la relacionada:

SELECT *

Para que los datos se seleccionen de todas las tablas, es necesario especificar el nombre de la tabla antes de *:

SELECT users.*, cities.*

O bien, se pueden enumerar los campos que necesitamos indicando el nombre de la tabla antes de ellos:

SELECT users.name, cities.name

Estos dos métodos tienen un problema. El asunto es que si los campos en las tablas tienen nombres idénticos, en el array de PHP ocurrirá un conflicto de nombres y solo prevalecerá un campo, el segundo no estará presente.

Para resolver el problema, es necesario renombrar los nombres conflictivos mediante el comando as:

SELECT users.name, cities.name as city_name

Vínculo

Después del comando ON debemos indicar los campos de las dos tablas mediante los cuales se realiza el vínculo. En nuestro caso, será el campo id de la tabla de ciudades y el campo city_id de la tabla de usuarios:

ON cities.id=users.city_id

Consulta

Finalmente, la consulta que obtendrá los usuarios junto con sus ciudades tendrá el siguiente aspecto:

SELECT users.name, cities.name as city_name FROM users LEFT JOIN cities ON cities.id=users.city_id

Tareas prácticas

Supongamos que tienes una tabla con productos y una tabla con sus categorías. Escribe una consulta que obtenga los nombres de los productos junto con sus categorías.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar