varios valores unir tablas solo repetido registros registro mostrar excluir ejemplos duplicados diferente consultas consultar consulta columna sql join

sql - valores - ¿Cómo excluir filas que no se unen con otra tabla?



unir dos tablas sql server (6)

Tengo dos tablas, una tiene clave principal y otra como clave externa.

Quiero extraer datos de la tabla primaria, solo si la tabla secundaria no tiene una entrada que contenga su clave. Tipo de opuesto de una combinación interna simple, que devuelve solo filas que se unen mediante esa clave.


Esto fue útil para usar en COGNOS porque se permitió la creación de una instrucción SQL "No en" en Cognos, pero tardó demasiado tiempo en ejecutarse. Había codificado manualmente la tabla A para unirme a la tabla B en Cognos como A.key "no en" B.key, pero la consulta tardaba demasiado / no devolvía los resultados después de 5 minutos.

Para cualquier otra persona que esté buscando una solución "NO ENCENDIDA" en Cognos, esto es lo que hice. Cree una consulta que una las tablas A y B con una combinación IZQUIERDA en Cognos seleccionando el tipo de enlace: la tabla A.Key tiene valores de "0 a N" en la tabla B, luego agregó un filtro (corresponde a cláusulas Where) para: tabla B .Key es NULL.

Corrió rápido y como un encanto.


Si desea seleccionar las columnas de la Primera Tabla "que también están presentes en la Segunda tabla, en este caso también puede usar EXCEPT . En este caso, los nombres de las columnas también pueden ser diferentes, pero el tipo de datos debe ser el mismo.

Ejemplo:

select ID, FName from FirstTable EXCEPT select ID, SName from SecondTable


utilice una combinación a la izquierda "no existe":

SELECT p.* FROM primary_table p LEFT JOIN second s ON p.ID = s.ID WHERE s.ID IS NULL



SELECT * FROM primarytable P WHERE NOT EXISTS (SELECT * FROM secondarytable S WHERE P.PKCol = S.FKCol)

Generalmente , (NOT) EXISTS es una mejor opción que (NOT) IN o (LEFT) JOIN


SELECT P.* FROM primary_table P LEFT JOIN secondary_table S on P.id = S.p_id WHERE S.p_id IS NULL