Voici un sous-ensemble de mes tableaux:Optimize requête SQL pour les commandes annulées
orders:
- order_id
- customer_id
order_products:
- order_id
- order_product_id (unique key)
- canceled
Je veux sélectionner toutes les commandes (ORDER_ID) pour un client donné (customer_id), où tous les produits de l'ordre sont annulé, pas seulement certains des produits. Y at-il une façon plus élégante ou efficace de le faire que cela:
select order_id from orders
where order_id in (
select order_id from orders
inner join order_products on orders.order_id = order_products.order_id
where order_products.customer_id = 1234 and order_products.canceled = 1
)
and order_id not in (
select order_id from orders
inner join order_products on orders.order_id = order_products.order_id
where order_products.customer_id = 1234 and order_products.canceled = 0
)
Quel est le moteur de base de données utilisez-vous, par exemple MySql, sql-server-2000, sql-server-2005, Oracle, etc. – chadhoc