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 puedo generar una consulta recursiva para obtener información de dos tablas?

Tengo una solicitud para obtener todos los registros secundarios:

with recursive cte (id, parentId) as 
(
    select id, parentId 
    from users 
    where id = 1 
union all 

select p.id, p.parentId 
from users p 
inner join cte on p.parentId = cte.id 
) 
select * from cte

También hay una tabla llamada user_info:

id, userId, login

Necesito hacer una consulta aquí para obtener más información. ¿Cómo puedo hacer esto?

Intenté agregar una unión interna adicional, pero no funcionó.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para consultar más información de la tabla user_info, puedes agregar un INNER JOIN a la consulta recursiva existente:

    WITH RECURSIVE cte (id, parentid) AS (
      SELECT id, parentid
      FROM users
      WHERE id = 1
      UNION ALL
      SELECT u.id, u.parentid
      FROM users u
      INNER JOIN cte ON u.parentid = cte.id
    )
    SELECT u.*, ui.login
    FROM cte c
    INNER JOIN users u ON c.id = u.id
    INNER JOIN user_info ui ON u.id = ui.userid;
    

    Esta consulta realiza un JOIN entre la cte y la tabla users en la columna id, y luego une la tabla user_info con la tabla users en la columna userid, seleccionando todas las columnas de la tabla users y la columna login de la tabla user_info.

    Asegúrate de ajustar los nombres de las columnas para que coincidan con tu esquema de tabla real.

Comments are closed.