我想选择所有包含特定商品的订单,并且有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次选择并合并结果吗?我怎样才能做到这一点?提前致谢。
答案 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