Obtener registro de SQL Server a partir de dos tablas con código optimizado.
Tengo dos tablas: una es Producto y la otra es ImagenProducto. En la tabla de imágenes de productos, pueden existir más de una imagen para cada producto. Cada conjunto de imágenes tiene una columna llamada ISDEFAULT que puede ser 1 o 0. Ahora quiero obtener todos los productos de la tabla de productos cuyas imágenes tengan todos los valores de ISDEFAULT en 0.
He escrito esta consulta:
SELECT DISTINCT(pd.ProductId)
FROM Product pd
INNER JOIN ProductImage img ON img.ProductId = pd.ProductId
WHERE NOT EXISTS (
SELECT pdi.ProductId
FROM ProductImage pdi
WHERE pdi.IsDefault = 1
AND pdi.ProductId = pd.ProductId
)
Funciona correctamente, pero mi superior me ha dicho que utilice otro enfoque.
Por favor, dame una consulta optimizada.
davy.ai
Se puede usar la siguiente consulta para obtener el resultado deseado:
SELECT pd.ProductId
FROM Product pd
WHERE NOT EXISTS (
SELECT pdi.ProductId
FROM ProductImage pdi
WHERE pdi.IsDefault = 1
AND pdi.ProductId = pd.ProductId
)