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.

Únase con “like” y evite resultados múltiples.

Quiero unir 2 tablas y buscar un valor con “like” (solo se compararán los primeros 4 caracteres) en la unión. Pero el resultado debe ser solo 1:1, quiero evitar resultados múltiples para una entrada en la tabla principal.

tab1

name
jackson
michael

tab2

name code
JACK 12345
JACK X 67890
Micha 12000
Michael T. 90000

Resultado

name_tab1 code_tab2
jackson 12345
michael 12000

Obtengo más de un resultado para cada entrada en tab1.

Select * from tab1
left outer join tab2 on lower(substr(tab1.name,1,4) like '%'||substr(trim(lower(tab2.name)),1,4)||'%';
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para evitar múltiples resultados para cada entrada en la tabla 1, puedes utilizar la palabra clave DISTINCT en tu sentencia SELECT. Aquí tienes un ejemplo de consulta:

    SELECT DISTINCT tab1.name AS nombre_tabla1, tab2.code AS codigo_tabla2
    FROM tab1
    LEFT OUTER JOIN tab2 ON LOWER(SUBSTR(tab1.name, 1, 4)) LIKE ‘%’ || SUBSTR(TRIM(LOWER(tab2.name)), 1, 4) || ‘%’;

    Esta consulta utiliza la palabra clave DISTINCT para eliminar duplicados del conjunto de resultados. Selecciona solo combinaciones únicas de nombres de la tabla 1 y códigos de la tabla 2 donde los primeros cuatro caracteres de los nombres coinciden (ignorando mayúsculas y minúsculas). El LEFT OUTER JOIN asegura que todas las filas de la tabla 1 estén incluidas en el conjunto de resultados, incluso si no hay una fila coincidente en la tabla 2. La sentencia SELECT utiliza alias para los nombres de las columnas y así hacer la salida más descriptiva.

Comments are closed.