En SQL Server 2005, tengo una tabla de detalles de la orden con una ID de pedido y una ID de producto. Quiero escribir una declaración SQL que encuentre todas las órdenes que tienen todos los artículos dentro de un orden en particular. Entonces, si la orden 5 tiene los ítems 1, 2 y 3, me gustaría todas las demás órdenes que también tengan 1, 2 y 3. Además, si la orden 5 tuvo 2 veces y 3 una vez, desearía todas las otras órdenes con dos 2s y un 3.Instrucción SQL para seleccionar un grupo que contiene todo un conjunto de valores
Mi preferencia es que devuelva las órdenes que coincidan exactamente, pero las órdenes que son un superconjunto son aceptables si eso es mucho más fácil/funciona mucho mejor.
que intentaron una autocombinación como la siguiente, pero que las órdenes que se encuentran con cualquier de los artículos en lugar de toda de los artículos.
SELECT * FROM Order O1
JOIN Order O2 ON (O1.ProductId = O2.ProductId)
WHERE O2.OrderId = 5
Esto también me dio duplicados si la orden 5 contenía el mismo artículo dos veces.
Si la persona ordena los múltiplos del artículo n. ° 1, entonces estaría en los Detalles del pedido como varias filas, correctas. No hay una columna de "cantidad"? –
Correcto - sin columna de cantidad –