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.

Cómo realizar un JOIN en una columna concatenada personalizada.

Tabla_E

Client_ID Nombre Producto
2217 John Smith Tableta
3109 Rebecca Anderson Teléfono
1569 Rajat Singh Portátil

Tabla_Z

ClientID Ciudad IDdeProducto
TA 2217 Boston xcg153hkk
PH 3109 Houston dfr983uht
LT 1569 Seattle tty455phq
SELECT EE.Nombre
      ,EE.Producto
      ,Left(ZZ.ID<em>de</em>Producto, 4, 3)
FROM Tabla<em>E EE
  LEFT JOIN Tabla</em>Z ZZ
  ON CASE WHEN EE.Producto = 'Tableta' THEN 'TA ' + EE.Client<em>ID
          WHEN EE.Producto = 'Teléfono' THEN 'PH ' + EE.Client</em>ID
          WHEN EE.Producto = 'Portátil' THEN 'LT ' + EE.Client<em>ID
          ELSE 'N/A' END = ZZ.Client</em>ID 

Para unir estas dos tablas, sé que es por el ClientID. Sin embargo, el ClientID en la TablaZ tiene un prefijo más un ‘espacio’ basado en el producto que se puede ver en la TablaE. Además, quiero recuperar en mi declaración ‘SELECT’ solo los números de IDdeProducto de la tabla Z. ¿Cómo lo lograría? ¿Cómo sería el código correcto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El código correcto para unir estas dos tablas y recuperar solo los números del Product_ID de la Tabla_Z se vería así:

    SELECT EE.Name, EE.Product, SUBSTRING(ZZ.Product_ID, 1, 3) AS Product_ID
    FROM Table_E EE
    LEFT JOIN Table_Z ZZ ON 
       CASE 
          WHEN EE.Product = 'Tablet' THEN 'TA ' + EE.Client_ID = ZZ.Client_ID
          WHEN EE.Product = 'Phone' THEN 'PH ' + EE.Client_ID = ZZ.Client_ID
          WHEN EE.Product = 'Laptop' THEN 'LT ' + EE.Client_ID = ZZ.Client_ID
       END
    

    En este código, utilizamos un LEFT JOIN para unir Table_E y Table_Z basado en el campo Client_ID. Para manejar el problema del prefijo en Table_Z, usamos una declaración CASE para concatenar el prefijo apropiado y los valores de Client_ID de Table_E.

    Para la parte final de la pregunta, utilizamos la función SUBSTRING para extraer solo los primeros tres caracteres del campo Product_ID en Table_Z. Esto nos proporcionará los números del Product_ID que deseamos en la salida.

Comments are closed.