2016-07-28 63 views
0

不工作我有一个MySQL查询订购日期为预计在MySQL

select count(*) as TotalCount, 
      pd.Product_Modified_Date, 
      psc.Product_Subcategory_Name, 
      pd.Product_Image_URL 
     from product_subcategory psc 
inner join product_details pd on psc.Product_Subcategory_ID = pd.Product_Subcategory_Reference_ID 
    where pd.Product_Status = 0 and 
      psc.Product_Subcategory_Status = 0 
    group by psc.Product_Subcategory_Name 
    order by pd.Product_Modified_Date desc 

enter image description here

在我product_details表中有新的图像的URL。但我无法通过上述查询得到它。

我该怎么办?

+1

看起来像什么永远填充'Product_Modified_Date'填充它是错误的。这也似乎只是一个MySQL问题。是否有PHP/mysqli的问题? – chris85

+0

你更喜欢什么输出?如果第一行代表172个具有相同名称的记录,那么您希望为该行显示哪个(可能不同)172日期和url? – showdev

回答

2

您正在对一列进行分组,Product_Subcategory_Name,但您的选择列表中还有其他列Product_Image_URLProduct_Modified_Date

如果您有组中有多行的情况(您这样做,因为每组中的计数是14或更多),MySQL只能为Product_Image_URL提供一个值。所以它会在组中选择一些行,并使用该行中的值。组中所有其他行的URL值将被忽略。

若要解决此问题,您必须将所有列组合在您的选择列表中,这些列不属于聚合函数的一部分。你不想用来组成一个新组的任何列必须进入一个聚合函数。

罗兰·布曼写了一个优秀的博客详细介绍了如何使用GROUP BY正确:http://rpbouman.blogspot.com/2007/05/debunking-group-by-myths.html