2

Me ocupa lo siguiente: Tengo una tabla que posee 2 columnas que tienen el mismo origen que son plataforma_origen y plataforma_destino ellas almacenan solo los id de las distintas plataformas.

**TABLA GESTION**
id
usuario
plataforma_origen
plataforma_destino

Los ids se originan de la siguiente Tabla

**TABLA PLATAFORMA**
id
plataforma

Lo que quisiera es hacer una sentencia SQL que me permita obtener como resultado algo como

id
usuario
plataforma_origen
plataforma_destino

pero que las columnas

plataforma_origen
plataforma_destino

muestren los nombres que correspondan en la TABLA PLATAFORMA He intentado con INNER JOIN pero solo lo he logrado hacer funcionar con una sola relacion dejo el SQL que he podido hacer funcionar a medias

SELECT *
FROM gestion
INNER JOIN plataforma
ON plataforma.id = gestion.plataforma_origen
Jose M Herrera V
  • 1,026
  • 8
  • 22

2 Answers2

1

Puedes hacer join dos veces a la misma tabla para obtener la descripción de ambas plataformas, utilizando alias para distinguir entre una y otra.

En resumen:

SELECT   gestion.id
       , gestion.usuario
       , po.plataforma as plataforma_origen
       , pd.plataforma as plataforma_destino
  FROM gestion
       INNER JOIN plataforma as po on po.id = gestion.plataforma_origen
       INNER JOIN plataforma as pd on pd.id = gestion.plataforma_destino

Esto suponiendo que siempre existan las plataformas. Puedes cambiar de inner join a left join si alguno de los campos de relación tiene valores nulos y te interesa obtener ese registro en el resultado.

jachguate
  • 25,659
  • 7
  • 35
  • 61
0
SELECT pl.plataforma
FROM plataforma AS pl
INNER JOIN gestion AS ge ON pl.id = ge.plataforma_origen OR (pl.id = ge.plataforma_destino) 

Lo otro que se me ocurre es esto:

SELECT pl.plataforma
FROM plataforma AS pl
INNER JOIN gestion AS ge ON pl.id = ge.plataforma_origen AND (pl.id = ge.plataforma_destino)