选择包含特定商品和特定行数的订单

时间:2016-07-27 10:13:12

标签: sql oracle

我想选择所有包含特定商品的订单,并且有3个订单。所以我必须把计数和地方结合起来,但我很努力。这就是我的想法,但它现在计算了包含此项目的行,它总是1。

select * from ord
where ordnum in (select ol.ordnum
                 from ord o
                 join ord_line ol
                     on o.ordnum = ol.ordnum
                 where ol.prtnum in ('item_X'))
group by ordnum
having count (ordlin) = 3 

我需要进行2次选择并合并结果吗?我怎样才能做到这一点?提前致谢。

2 个答案:

答案 0 :(得分:1)

试试这个

SELECT 
    O.ordnum,
    COUNT(1)
FROM 
    ord O INNER JOIN 
    (
        SELECT tmp.ordnum FROM ord_line tmp
        WHERE
            tmp.prtnum in ('item_X'))
        GROUP BY ordnum HAVING COUNT(1) = 3

    ) A ON O.ordnum = A.ordnum
 GROUP BY O.ordnum

答案 1 :(得分:1)

HAVING获得3件物品的订单。 WHERE确保其中一个itms是你需要包含的那个。

HTH。

Select O.OrdrNum, COUNT( OL.OrdNum )
FROM Ord O
INNER JOIN Ord_Line OL ON OL.ordnum = O.ordnum
WHERE O.OrdNum IN (SELECT OrdNum FROM Ord_Line WHERE prtnum = 'item_X')
GROUP BY O.OrdrNum
HAVING COUNT(OL.OrdNum) = 3