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 encontrar el registro maestro ‘MAIN’ en SQL.

Estoy ejecutando una consulta:

    SELECT
        parentcompanycomponentid
        ,companycomponentid
        ,name
        ,validcpycompnttypecsname
    FROM dbo.cscompanycomponent
    WHERE companycomponentid IN (10217,7726,3109)

La cual devuelve los siguientes resultados:

Por casualidad, conozco estos IDs y los estoy usando para este ejemplo.

¿Cómo puedo devolver resultados como estos en general agrupando compañías vinculadas, hasta llegar a la compañía ‘PRINCIPAL’?

Habrá varias otras compañías donde no conozco los IDs y quiero poder agrupar estos resultados juntos para seguir obteniendo el retorno de la compañía PRINCIPAL con su asociación padre-hijo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puedes usar una CTE recursiva para recorrer las relaciones de padre-hijo y agrupar los resultados juntos. La siguiente consulta debería hacer el truco:

    WITH cte AS (
        SELECT 
            parent_company_component_id, 
            company_component_id, 
            name, 
            valid_cpy_compnt_type_cs_name
        FROM dbo.cs_company_component
        WHERE company_component_id IN (10217,7726,3109)
        UNION ALL
        SELECT 
            c.parent_company_component_id, 
            c.company_component_id, 
            c.name, 
            c.valid_cpy_compnt_type_cs_name
        FROM dbo.cs_company_component c
        INNER JOIN cte ON c.company_component_id = cte.parent_company_component_id
    )
    SELECT * FROM cte
    

    Esta consulta recorrerá las relaciones de padre-hijo y devolverá todas las empresas relacionadas, hasta que llegue a la empresa ‘PRINCIPAL’.

Comments are closed.