我有两个单独的查询,自己工作正常,但我需要他们在一个查询工作。我可以在excel中轻松地组合结果,但这是更大查询的一部分。两个计数在一个查询与反对哪里条件
的两个单独的查询是:
SELECT
SiteProductVariation.ProductVariationID,
COUNT(SiteProduct.SiteProductID) AS Expr1
FROM
SiteProductVariation
INNER JOIN
SiteProduct ON SiteProduct.SiteProductID = SiteProductVariation.SiteProductID
WHERE
(SiteProductVariation.ProductVariationID = 159868)
AND (SiteProduct.ProductDisplay = 0)
GROUP BY
SiteProductVariation.ProductVariationID
和
SELECT
SiteProductVariation.ProductVariationID,
COUNT(SiteProduct.SiteProductID) AS Expr1
FROM
SiteProductVariation
INNER JOIN
SiteProduct ON SiteProduct.SiteProductID = SiteProductVariation.SiteProductID
WHERE
(SiteProductVariation.ProductVariationID = 159868)
AND (SiteProduct.ProductDisplay = 1)
GROUP BY
SiteProductVariation.ProductVariationID
对于本ProductVariationID
有11个Siteproductids,7 Productdisplay = 1和4 ProductDisplay = 0,并且这些查询做返回那信息很好。
但我试图将它们组合成:
SELECT
SiteProductVariation.ProductVariationID,
COUNT(SiteProduct.SiteProductID) AS Expr1,
COUNT(SiteProduct_1.SiteProductID) AS Expr2
FROM
SiteProductVariation
INNER JOIN
SiteProduct ON SiteProduct.SiteProductID = SiteProductVariation.SiteProductID
INNER JOIN
SiteProduct AS SiteProduct_1 ON SiteProduct_1.SiteProductID = SiteProductVariation.SiteProductID
WHERE
(SiteProductVariation.ProductVariationID = 159868)
AND (SiteProduct.ProductDisplay = 0)
AND (SiteProduct_1.ProductDisplay = 1)
GROUP BY
SiteProductVariation.ProductVariationID
,并没有结果。我认为这是因为当我看到这个问题时使用group。
即使说我不能这样做,任何帮助都很感激。 ProductDisplay等于1或0的结果可能有0个结果,因此可能需要考虑。提前致谢。
添加到已经给出了答案:通过使用两个内部连接,你只能得到既有SiteProduct纪录ProductDisplay = 0 SiteProductVariations和一个是ProductDisplay = 1。你可以使用左外部连接,将ProductDisplay条件移动到ON子句并计算不同的ID,但是如Cetin Basoz所示仅查询一次表格会好得多(只有在那里给出的解释不准确)。 –
“给出的解释不准确”???你认为一个像这样简单的SQL需要任何解释吗? –
@Cetin Basoz:对不起,冒犯意味着:-)“价值不能同时为0和1”是错误的。很可能一个SiteProductVariation存在两个SiteProduct记录,一个存储ProductDisplay 0,一个存储为1.因此,您没有真正解释OP的查询出了什么问题。但是你的解决方案很好。 –