我想从表格A.Prod_Name where status is ACTIVE
中选择,然后计算表格B WHERE Table B.Status is OPENED
中的寄存器总数,如果表B中没有任何内容,则Product_Name
计数将为0。 / p>
如果要对表B中的寄存器进行计数,因为它应该查找状态为OPENED的寄存器,它会显示产品名称和计数,但如果表B中的产品没有任何内容状态为OPENED,然后它不会选择表A中的Product_Name
,而且不会计算任何内容。
WHERE Table B.Status = 'OPENED'
条件只影响表B.而不是表A,基本上是2,其中条件,一个在产品选择而另一个在左连接选择,但结果计数将是逐个产品。
SELECT
tableA.prodID,
tableA.prodName,
COUNT(tableB.DetailsID) as numberDetails
FROM
tableA
LEFT JOIN tableB
ON tableA.prodID = tableB.prodID
WHERE
tableA.status = 'ACTIVE'
and tableB.status = 'OPENED'
GROUP BY
tableA.prodID
答案 0 :(得分:1)
如果我理解正确,我认为你想将OPENED
的检查移到JOIN中,这样在tableB中没有状态OPENED
的tableA记录仍会显示。
SELECT
tableA.prodID,
tableA.prodName,
COUNT(tableB.DetailsID) as numberDetails
FROM
tableA
LEFT JOIN tableB
ON tableA.prodID = tableB.prodID
AND tableB.status = 'OPENED'
WHERE
tableA.status = 'ACTIVE'
GROUP BY
tableA.prodID
答案 1 :(得分:0)
SELECT
tableA.prodId
, tableA.prodname
, cntQry.numberDetails
FROM tableA
LEFT JOIN
(SELECT
tableB.ProdId
, COUNT(*) as numberDetails
FROM tableB
WHERE tableB.status = 'OPENED'
GROUP BY tableB.ProdId) cntQry
ON tableA.ProdId = cntQry.ProdId
WHERE tableA.status = 'ACTIVE'