entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Ayuda consulta con select multiple

Hola todos necesito ayuda con la siguiente consulta.Soy inexperto en consultas multiples
Mi falla esta en el select que concateno todo el nombre y en los dos siguientes.
La intención de esta consulta es traer los datos de un tercero e incluyendo los datos de un tercero especifico cuyo perfil es 10 en las subquerys gracias por su atención

       TI.Id_Unico, 
           TI.NOMBRE,  
           T.NumeroIdentificacion NUM,
       T.DigitoVerficacion DIG,
           SR.Nombre,
           T.RazonSocial,
           RG.Nombre,
           TE.Nombre,
           TN.Nombre,
           DP.Nombre,
           CD.Nombre,
           ZN.Nombre,
           (SELECT Concat(t.Id_Unico,' ',t.NombreUno,' ',t.NombreDos,' ',t.ApellidoUno,' ',t.ApellidoDos) 
            FROM gf_tercero t LEFT JOIN  gf_tipo_identificacion ti ON t.TipoIdentificacion = ti.Id_Unico
            LEFT JOIN gf_perfil_tercero pt ON t.Id_Unico = pt.Tercero 
            WHERE pt.Perfil = 10) ReP,
           (SELECT ti.Nombre
            FROM gf_tercero t LEFT JOIN  gf_tipo_identificacion ti ON t.TipoIdentificacion = ti.Id_Unico
            LEFT JOIN gf_perfil_tercero pt ON t.Id_Unico = pt.Tercero 
            WHERE pt.Perfil = 10) NOMD,
           (SELECT t.NumeroIdentificacion
            FROM gf_tercero t LEFT JOIN  gf_tipo_identificacion ti ON t.TipoIdentificacion = ti.Id_Unico
            LEFT JOIN gf_perfil_tercero pt ON t.Id_Unico = pt.Tercero 
            WHERE pt.Perfil = 10) NumI,
            T.Id_Unico
    FROM gf_tercero T 
    LEFT JOIN gf_tipo_identificacion TI ON T.TipoIdentificacion = TI.Id_Unico
    LEFT JOIN gf_sucursal SR ON T.Sucursal = SR.Id_Unico
    LEFT JOIN gf_tipo_regimen RG ON T.TipoRegimen = RG.Id_Unico
    LEFT JOIN gf_tipo_empresa TE ON T.TipoEmpresa = TE.Id_Unico
    LEFT JOIN gf_tipo_entidad TN ON T.TipoEntidad = TN.Id_Unico
    LEFT JOIN gf_ciudad CD  ON T.CiudadIdentificacion = CD.Id_Unico
    LEFT JOIN gf_departamento DP ON CD.Departamento = DP.Id_Unico
    LEFT JOIN gf_zona ZN ON T.Zona = ZN.Id_Unico
    LEFT JOIN gf_perfil_tercero PT ON T.Id_Unico = PT.Tercero
    WHERE PT.Perfil = 6

1 Respuesta

4votos

Leonardo-Tadei Puntos227320

Hola @Jhon_Numpaque,

la consulta es demasiado compleja para poder resolverla sin tener la estructura de las tablas, unos datos de prueba y la proyección que querés como resultado... esto sin contar que todos los LEFT JOIN podrían no devolver resultado en una query válida, con lo que los datos proyectados son más difusos todavía.

Sin embargo, en uno de los lugares en dónde seguro te está fallando esta query es en el subselect, ya que cuando se usa una subconsulta, esta debe devolver 1 solo campo en 1 solo registro.

Este subselect al tener como única restricción WHERE pt.Perfil = 10, devolverá todos los registros de gf_perfil_tercero, y si no entiendo mal la semántica de tu problema, habrá más de un resultado para perfil = 10.

Pasa lo mismo para la 2da subquery.

Una forma de entender mejor lo que pasa es ejecutar cada subquery por separado y controlar que devuelva solo 1 registro con 1 campo.

Saludos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta