Recuperar el valor de una columna basado en el valor de otra columna en otra tabla.
Tengo dos tablas:
- Tbl 1
- Tbl 2
Tbl 2 contiene transacciones realizadas por usuarios en Tbl 1. Las tablas contienen datos como las siguientes capturas de pantalla.
- Tbl 1 https://i.stack.imgur.com/BObDH.png
- Tbl 2 https://i.stack.imgur.com/pMEuM.png
Quiero seleccionar los datos de Tbl 2, pero en lugar del valor de la columna “ac_to”, quiero su valor correspondiente de “uid” de Tbl 1.
Mis intentos de consulta son los siguientes:
select t2.ac_from_ui,
t1.ui as "ac_to_uid",
t2.amt
from tbl1 t1
join tbl2 t2
on t2.ac_to = t1.ac_ref
Por lo tanto, hay dos cosas que quiero descubrir:
- ¿Hay alguna manera mejor de consultar y obtener datos de otra tabla en función del valor de una tabla?
- El uso de la consulta anterior me hace perder transacciones con “NA” en el campo “ac_to”. Quiero mantenerlas.
He intentado con “left join”, pero su rendimiento en un conjunto de datos enorme es un problema para mí.
davy.ai
Seleccionando datos de Tbl 2 con valor UID correspondiente de Tbl 1
Para seleccionar datos de
Tbl 2
con el valoruid
correspondiente deTbl 1
, puede usar una declaración de unión entre las dos tablas basada en una columna que tienen en común, que en este caso es la columnaac_ref
. La consulta que ha proporcionado parece hacer el trabajo correctamente, pero también puede probar una subconsulta correlacionada o una declaración de selección anidada, según su caso de uso específico.Manteniendo transacciones con valor NA en el campo ac_to
Para mantener transacciones con valor
NA
en el campoac_to
, puede modificar su declaración de unión existente para usar una unión izquierda en lugar de una unión interna. Esto incluirá todas las filas deTbl 2
en el conjunto de resultados, independientemente de si tienen una fila coincidente enTbl 1
. La consulta modificada se vería así:Sin embargo, ha mencionado que el rendimiento de una unión izquierda en un conjunto de datos enorme es un problema para usted. En ese caso, puede intentar optimizar su consulta agregando índices apropiados a sus tablas o filtrando sus datos para reducir la cantidad de filas que se unen.