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 Puntos192500

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 ingresa o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

  • steven ganó una medalla hace 10 horas

    Veterano - Primera visita hace más de 180 días
  • leog.1992 ganó una medalla hace 1 día

    Renovador - Received Buena Respuesta badge in resp…
  • leog.1992 ganó una medalla hace 1 día

    Medallista - Received total of 10 badges
  • leog.1992 ganó una medalla hace 1 día

    Buena Respuesta - Recibido +1 votos en respuesta
  • sagrario ganó una medalla hace 1 día

    Buena Pregunta - Recibido +1 votos en pregunta
  • leog.1992 respondió hace 1 día

    ticket en java con mysql
  • leog.1992 ganó una medalla hace 1 día

    Antepasado - Primera visita hace más de 365 días
  • leog.1992 ganó una medalla hace 1 día

    Veterano - Primera visita hace más de 180 días
  • Leonardo-Tadei ganó una medalla hace 2 días

    Buena Respuesta - Recibido +1 votos en respuesta
  • nico140 ganó una medalla hace 3 días

    Buena Pregunta - Recibido +1 votos en pregunta

¿Eres Usuario Apple?

...

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

Conecta