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.

SQL para no mostrar resultado si alguna condición falla.

Aquí está mi consulta SQL:

SELECT prtyrel.prty_id, prtyrel.rel_id, ivprty.prty_type_cd 
FROM IVPTY ivprty 
JOIN PRTY_REL prtyrel ON ivprty.prty_id = prtyrel.prty_id 
WHERE prtyrel.rel_id = 'ABC0123' 

La consulta anterior devuelve el siguiente resultado:

prty_id     |   rel_id      | prty_type_cd
PR1         |   ABC0123     | ORG
PR2         |   ABC0123     | ORG
PR3         |   ABC0123     | PER

Mi requisito es que, si el rel_id asociado a cualquier prty_id tiene un prty_type_cd de PER, entonces la consulta no debe devolver ningún registro. Para los datos dados anteriormente, la consulta no debería devolver ningún registro. La consulta solo debe devolver un resultado cuando el prty_id y el rel_id asociados tienen un prty_type_cd de ORG.

¿Cómo lograr esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado requerido, necesitamos modificar la consulta SQL existente y agregar una subconsulta para verificar si alguno de los prty_id tiene un prty_type_cd de PER. Aquí está la consulta SQL modificada:

    SELECT prtyrel.prty_id, prtyrel.rel_id, ivprty.prty_type_cd 
    FROM IVPTY ivprty 
    JOIN PRTY_REL prtyrel ON ivprty.prty_id = prtyrel.prty_id 
    WHERE prtyrel.rel_id = 'ABC0123' 
    AND NOT EXISTS (
      SELECT 1 
      FROM IVPTY i 
      JOIN PRTY_REL p ON i.prty_id = p.prty_id 
      WHERE i.prty_type_cd = 'PER' 
      AND p.rel_id = prtyrel.rel_id
    )
    

    En esta consulta, agregamos una subconsulta que verifica si hay alguna fila en las tablas IVPTY y PRTY_REL donde prty_type_cd es ‘PER’ y el rel_id coincide con el rel_id en la consulta externa. Si hay tal fila, la consulta externa no devolverá ningún resultado.

    Esta consulta solo devolverá filas donde prty_type_cd sea ‘ORG’ para todos los prty_id asociados con el rel_id dado.

Comments are closed.