访问SQL查询 - 前25个包含/ images /

时间:2014-05-02 14:59:45

标签: sql ms-access

我是一名大学生(因此是初学者),有一些Access任务要做,但我需要帮助,因为到目前为止它没有提供所需的结果。

我有一个包含网络日志记录的表Table1。我感兴趣的领域是" cs-uri-stem",因为它包含所有URL GET请求。

我想选择TOP 25 images(记录必须包含" cs-uri-stem"字段中的/ images /)。到目前为止,我尝试了以下方法,但没有成功:

SELECT TOP 25
FROM Table 1
WHERE "cs-uri-stem"="cs-uri-stem"
HAVING [/images/];

警告窗口一直显示说SELECT请求不正确,但我不知道这是否是由于我所在大学使用西班牙语而导致的。

提前致谢!


我的问题的可能答案,提供了Siyual和MCP_infiltrator的帮助[再次感谢!]:

SELECT TOP 25 
   Table1.[cs-uri-stem], 
   Count(Table1.[cs-method]) AS TotalHits 
FROM Table1 
WHERE (((Table1.[cs-uri-stem]) Like '*/images*')) 
GROUP BY Table1.[cs-uri-stem] 
ORDER BY Count(Table1.[cs-method]) DESC`

这将提供仅列出访问图像的前25个列表,没有重复,而不是所有网址。

4 个答案:

答案 0 :(得分:3)

您的查询有几个问题,但这应该适用于您需要的内容:

SELECT TOP 25 Images
FROM    Table1
WHERE   cs-uri-stem Like '%/images/%'

至于什么/为什么出错了......

对于Select声明,您不能指定您想要获得的任何字段。我在您的问题中假设您有一个名为images的字段,您想要回来。如果是某个其他字段,请更改该字段,或者只使用SELECT TOP 25 *来获取所有内容。

您的From子句在表名中有一个空格。

你的Where条款毫无意义。这是您需要为查询提供逻辑的地方。在这种情况下,您希望/images/字段中包含cs-uri-stem的任何内容。 Like是您需要在此处使用的运算符。

最后,您的Having完全错了。它没有正确使用,即使在正确的环境中也没有。

答案 1 :(得分:0)

SELECT TOP 25 *
FROM TABLE1
WHERE CS-URI-STEM LIKE "*/images*"

这将从表格中选择前25个记录和所有列cs-uri-stem中包含/images的列。当您使用告诉数据库的*时,您希望拉出表的所有列以供查看。

这是一个描述其中一些内容的链接 See Here: Select Top n in MS-Access

另一个链接 from office.microsoft.com

答案 2 :(得分:0)

我会创建三个查询:

QUERY1:

SELECT Images
FROM    Table1
WHERE   cs-uri-stem Like '*/images/*'

QUERY2:

select images, count(images) as image_count
from query1 as q
group by images

QUERY3:

select top 25 *
from query2
order by image_count desc

query3应该包含您感兴趣的25个结果。

答案 3 :(得分:-1)

SELECT TOP 25 * FROM Table1 WHERE cs-uri-stem LIKE '%/images/%'

http://www.w3schools.com/sql/sql_like.asp