es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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í.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Seleccionando datos de Tbl 2 con valor UID correspondiente de Tbl 1

    Para seleccionar datos de Tbl 2 con el valor uid correspondiente de Tbl 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 columna ac_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 campo ac_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 de Tbl 2 en el conjunto de resultados, independientemente de si tienen una fila coincidente en Tbl 1. La consulta modificada se vería así:

    seleccionar t2.ac_from_ui, t1.ui como "ac_to_uid", t2.amt
    desde tbl2 t2
    uniéndose a tbl1 t1
    en t2.ac_to = t1.ac_ref
    

    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.

Comments are closed.