2011-05-20 61 views
1
SELECT 
    siteapplications.Application, Count(visits.VisitId) AS CountOfVisitId 
FROM 
    visits, 
    siteapplications 
WHERE 
    visits.SiteApplicationId=siteapplications.ApplicationID 
    and Month([visits.VisitTime])= month and Year([visits.VisitTime])= year 
GROUP BY 
    siteapplications.Application 
ORDER BY 
    CountOfVisitId DESC; 

也许一个愚蠢的问题,但与我运行此查询时,我需要填写月份,年份和CountOfVisitId?为什么我必须填写此参数值

但CountOfVisitId我需要它来计算(因此查询)

我没有与查询的很多经验,但我需要这一个用Java

谁能解释或解决...

+0

在您的访问表中是否存在“VisitId”字段?您的数据库是否对字段/表名称敏感?通常,提示填写字段值意味着您放入查询中的表/字段名称不存在于数据库中。 – 2011-05-20 20:17:19

+0

是的,有一个这个名字的字段,它的名字和VisitId是一样的......我自己选了这个,但是thx无论如何 – 2011-05-20 20:20:27

+0

@John:是的,完成了。 – 2011-05-20 20:39:28

回答

1

通常,根据您的品牌和SQL版本,您无法按列别名进行分组,也不能按列别名进行排序。所以你可以试试ORDER BY 2 DESC

+0

现在工作没有问题的参数...秩序似乎一见钟情。 Thx .. – 2011-05-20 20:57:40

1

正如@MJB提到的那样,通常不能按列别名进行排序。试试这个(注意更改为ORDER BY):

SELECT 
    siteapplications.Application, Count(visits.VisitId) AS CountOfVisitId 
FROM 
    visits, 
    siteapplications 
WHERE 
    visits.SiteApplicationId=siteapplications.ApplicationID 
    and Month([visits.VisitTime])= month and Year([visits.VisitTime])= year 
GROUP BY 
    siteapplications.Application 
ORDER BY 
    Count(visits.VisitId) DESC; 
+0

很高兴知道...我不会使用查询的我自己!谢谢 – 2011-05-20 20:59:34

相关问题