Saltar al contenido

Consulta SQL única para seleccionar un registro de la tabla principal solo si todos sus registros en la tabla secundaria tienen valores

Nuestros mejores desarrolladores han agotado sus provisiones de café, por su búsqueda todo el tiempo por la solución, hasta que Lucas halló la contestación en Bitbucket por lo tanto ahora la comparte aquí.

Solución:

Esto se denomina "anti-unión" (o anti-semiunión). Una forma de escribirlo en SQL es usar el NOT EXISTS construcción:

SELECT t1.*
FROM Table1 AS t1
WHERE NOT EXISTS
      ( SELECT *
        FROM Table2 AS t2
        WHERE t2.FKcolumn = t1.PKcolumn
          AND t2.columnX IS NULL
      ) 

Si, como su comentario, desea que una fila principal (en la Tabla 1) no esté relacionada con ninguna fila secundaria (en la Tabla 2), NO se muestre, agregue esto (o únase a la Tabla 2 si también desea columnas de la segunda tabla que se muestra):

  AND EXISTS
      ( SELECT *
        FROM Table2 AS t2
        WHERE t2.FKcolumn = t1.PKcolumn
      ) 

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.