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.

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.

Tags:  , ,

Answer

  1. Avatar for 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
    )

Comments are closed.